หลังจากติดตั้ง Nginx Proxy Manager (NPM) เรียบร้อยแล้ว ขั้นตอนต่อไปคือการตั้งค่า Proxy Host เพื่อเชื่อมโยง Domain เข้าหา Container และเปิด HTTPS ด้วย Let’s Encrypt โดยไม่ต้องเขียนโค้ดสักบรรทัด
เตรียมความพร้อมก่อน
ก่อนเริ่มตั้งค่า Proxy Host ตรวจสอบให้แน่ใจว่า:
- Domain ชี้ A Record มายัง IP เซิร์ฟเวอร์แล้ว (รอ DNS Propagate หากทำใหม่)
- Container ที่ต้องการ Proxy อยู่ใน Network เดียวกับ NPM
- NPM รันอยู่และเข้าถึง Admin UI ได้
ตั้งค่า Proxy Host
เข้าสู่ Admin UI (http://server-ip:81) แล้วทำตามขั้นตอน:
- คลิก Hosts → Proxy Hosts
- คลิกปุ่ม Add Proxy Host
- กรอก Domain Name เช่น
blog.example.com - ตั้งค่า Forward Hostname เป็นชื่อ Service ใน Docker (เช่น
wordpress) - ตั้งค่า Forward Port เป็น Port ที่ Container รับฟัง (เช่น
80) - เปิด Block Common Exploits
| Field | ค่าตัวอย่าง | ความหมาย |
|---|---|---|
| Domain Names | blog.example.com | ชื่อ Domain ที่ต้องการ |
| Forward Hostname/IP | wordpress | ชื่อ Service ใน Docker |
| Forward Port | 80 | Port ที่ Container รับฟัง |
| Block Common Exploits | เปิด | ป้องกัน Common Attacks |
เปิด SSL / HTTPS
ในหน้าตั้งค่า Proxy Host เดียวกัน คลิกแท็บ SSL แล้วตั้งค่า:
- SSL Certificate: เลือก “Request a new SSL Certificate”
- เปิด Force SSL — บังคับ HTTP เป็น HTTPS อัตโนมัติ
- เปิด HTTP/2 Support — ปรับปรุงความเร็ว
- ใส่อีเมลสำหรับ Let’s Encrypt
- ติ๊ก “I Agree to the Let’s Encrypt Terms of Service”
- คลิก Save
NPM จะขอ SSL Certificate จาก Let’s Encrypt โดยอัตโนมัติ ใช้เวลาประมาณ 1-2 นาที
ข้อควรระวัง: Forward Hostname
ค่า Forward Hostname ต้องใช้ชื่อ Service ใน Docker ไม่ใช่ localhost หรือ IP เพราะ NPM อยู่ใน Container แยก localhost คือ NPM เอง ไม่ใช่ WordPress
# ถูกต้อง ✓
Forward Hostname: wordpress # ชื่อ Service ใน docker-compose.yml
Forward Hostname: my-app # Service อื่น
# ผิด ✗
Forward Hostname: localhost # นี่คือ NPM Container เอง
Forward Hostname: 127.0.0.1 # เหมือนกัน
ปรับแต่ง Advanced Config (ถ้าต้องการ)
ในแท็บ Advanced สามารถเพิ่ม Nginx Config เพิ่มเติมได้ เช่น:
# ตัวอย่าง: เพิ่ม Headers สำหรับ WordPress
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 64M;
สรุปการตั้งค่า Proxy Host
| ขั้นตอน | รายละเอียด |
|---|---|
| 1. Details Tab | ใส่ Domain + Forward Host/Port |
| 2. SSL Tab | เลือก Request SSL + Force SSL |
| 3. Save | NPM ขอ Certificate อัตโนมัติ |
| 4. ทดสอบ | เปิด https://yourdomain.com |
บทความถัดไป เราจะสำรวจเรียนรู้ Traefik ซึ่งเป็น Reverse Proxy อีกตัวเลือกที่นิยม โดยเฉพาะสำหรับ DevOps เพราะใช้ระบบ Labels ใน Docker ในการตั้งค่า ไม่ต้องเข้าหน้าเว็บ UI เลย

