Categories
digital ocean Docker nginx

ทำ Reverse Proxy ด้วย NGINX

สิ่งที่ต้องเตรียมใน workshop นี้

1 สมัคร https://www.digitalocean.com/ เพื่อเตรียมไว้สร้าง Server ทดสอบ

2 สมัคร https://www.cloudflare.com/ เพื่อตั้งค่า dns ของโดเมนและซับโดเมน

3 Unix/Linux Command เบื้องต้น เช่น cd, mkdir

4 nginx และ Docker Compose พื้นฐาน ดูได้จาก https://thana.in.th/2020/05/06/ติดตั้ง-nginx-ด้วย-docker-compose/

เมื่อเตรียมพร้อมแล้วเรามาเริ่มกันเล้ย

สร้าง Droplet ใหม่ที่ DigitalOcean

เลือก plan ต่ำสุดเพื่อนำมาทดสอบ แล้วค่อยระเบิดทิ้ง แต่ท่านใดเงินเหลือๆ เลือก 32 cpu เพื่อความลื่นปรื๊ดก็ไม่ว่ากันฮะ 555+

สร้างเสร็จแล้ว ท่านใดเลือก one-time password ก็เซตให้เรียบร้อย แต่ท่านใดใช้ Authen แบบ ssh key ก็เข้า Terminal รอไว้เลย

ติดตั้ง Docker เพื่อเตรียมไว้ทำ Workshop

curl -sSL https://get.docker.com/ | sh

ติดตั้งเสร็จ ทดสอบด้วย

docker -v

ขั้นต่อไปจะ build container จาก nginx image เพื่อทดสอบ

สร้าง directory

mkdir -p /host/workshop/wrk-proxy

สร้างไฟล์ docker-compose.yml

version: '2.0'
services:
  web:
    image: nginx:1.13.0-alpine
    container_name: workshop1
    ports:
    - "8081:80"
    volumes:
    - /host/workshop/wrk-proxy/html:/usr/share/nginx/html

สร้าง index.html ไว้ที่ /host/workshop/wrk-proxy/html

<html>
<h1>Workshop1</h1>
</html>

จากนั้นใช้คำสั่ง

docker-compose up -d

ตรวจสอบ container ด้วย

docker ps -a

เปิด browser [ip address server]:[port]

กลับไปที่ terminal ติดตั้ง nginx

apt install nginx

ติดตั้ง nginx เสร็จเรียบร้อยก็ไปตรวจสอบดูที่ Browser พิมพ์ [ip address server] จะขึ้นหน้า Welcome to nginx

จากนั้นเข้าไปที่ https://www.cloudflare.com/ Add Domain เข้าไปจากนั้นก็ไปตั้งค่า DNS ให้ชี้มาที่ Server

จากนั้นเราก็ไปเรียกดู zity.co จะขึ้นหน้า Welcome to nginx ที่เราติดตั้งไว้

ต่อไปเราจะทำการเพิ่ม Sub Domain เข้าไปโดยกดปุ่ม Add record

ใส่ชื่อ Sub Domain ที่ต้องการ และ ip address server

กลับไปที่ terminal เพิ่มไฟล์ workshop1

nano /etc/nginx/sites-available/workshop1
server {
        listen 80;
        listen 443 ssl http2;
        server_name workshop1.zity.co;

        location / {
                proxy_pass http://127.0.0.1:8081;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Host $server_name;
        }
}

จากนั้นก็ใช้คำสั่ง

ln -s /etc/nginx/sites-available/workshop1 /etc/nginx/sites-enabled/

เสร็จแล้วตรวจสอบด้วย

nginx -t

หากขึ้น ตามนี้ก็เสร็จแล้ว หากขึ้น error ก็กลับไปตรวจสอบ path หรือชื่อไฟล์

สุดท้ายก็ restart nginx ก็เสร็จแล้วครับ

systemctl restart nginx

จากนั้นเราก็ไปตรวจสอบที่ brower โดยพิมพ์ workshop1.zity.co หากแสดงผลตามหน้า ip adress server:8081 ก็สำเร็จแล้ว

ปอลิง

แน่ะ รู้นะคิดอะไรอยู่ คนจริงเค้าโชว์ ip เครื่อง server กันฮะ แมนๆกันไปเลย หุหุ รีบลบตั้งแต่ ทำ workshop เสร็จแล้ว ไม่กลัวโดนยิงแต่กลัว DO มันแบนมากกว่า งานอยู่กะมันเต็มเรย ถถถถถ+

Spread the love