
จัดการ Nginx ง่ายดายด้วย Nginx Proxy Manager
Nginx Proxy Manager (NPM) เป็น Open source ซึ่งออกแบบมาเพื่อให้การจัดการ Reverse Proxy, SSL, Access Lists ของ Nginx เป็นเรื่องง่าย มันถูกสร้างขึ้นด้วยหน้าเว็บควบคุมที่ใช้งานได้ง่าย ซึ่งมีจุดมุ่งหมายเพื่อช่วยเหลือผู้ใช้ที่ไม่ใช่ผู้เชี่ยวชาญในการใช้ CLI ของ Nginx นอกจากนี้ยังสามารถสร้าง SSL ฟรีผ่าน Let’s Encrypt ได้อีกด้วย
การติดตั้งผ่าน Docker ทำให้ติดตั้งได้งานมาก แถมยังรองรับการใช้งานหลายผู้ใช้ด้วย โดยบทความนี้จะอธิบายกระบวนการติดตั้งใน Docker และแนะนำการใช้งานผ่าน UI รวมถึงการตั้งค่าเบื้องต้น มาดูกัน...
1. Nginx Proxy Manager คืออะไร?
Nginx Proxy Manager (NPM) เป็นเครื่องมืออันทรงพลังที่สร้างขึ้นเพื่อลดความซับซ้อนในการจัดการ Proxy, SSL และความสามารถอื่นๆ ของ Nginx ได้รับการออกแบบโดยคำนึงถึงผู้ใช้ที่อาจไม่ค่อยคุ้นเคยกับความซับซ้อนของ Nginx
เครื่องมือนี้ช่วยให้ผู้ใช้สามารถเปิดเผยบริการเว็บภายในเครือข่าย (หรือคอมพิวเตอร์) ได้อย่างง่ายดาย กล่าวอีกนัยหนึ่งก็คือเครื่องมือนี้มอบเกตเวย์ที่ปลอดภัยและมีประสิทธิภาพสำหรับการรับส่งข้อมูลทางอินเทอร์เน็ต นอกจากนี้ การผสานรวมกับ Let’s Encrypt ยังช่วยให้ผู้ใช้สามารถรักษาความปลอดภัยบริการของตนด้วยใบรับรอง SSL ฟรี
คุณสมบัติหลัก:
- UI ที่สวยงาม: อินเทอร์เฟซนั้นใช้งานง่ายและเป็นมิตรกับผู้ใช้งาน
- SSL ฟรี: การรองรับ Let’s Encrypt ในตัวช่วยให้ผู้ใช้สามารถรักษาความปลอดภัยบริการเว็บของตนได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม
- ติดตั้งผ่าน Docker: Nginx Proxy Manager ถูกสร้างขึ้นเป็น Docker image ซึ่งทำให้การปรับใช้ง่ายขึ้น
- ผู้ใช้หลายราย: รองรับการกำหนดค่าผู้ใช้เพิ่มเติมด้วยระดับการเข้าถึงที่แตกต่างกัน
2. จะติดตั้ง Nginx Proxy Manager ได้อย่างไร
เราจะติดตั้ง Nginx Proxy Manager ผ่าน docker-compose.yml กัน
services:
proxy:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
– 80:80 # Public HTTP Port
– 81:81 # Admin Web Port
– 443:443 # Public HTTPS Port
volumes:
- proxy-data:/data
- letsencrypt-date:/etc/letsencrypt
volumes:
proxy-data:
letsencrypt-date:
จากนั้นใช้คำสั่ง docker-compose up -d
เมื่อสำเร็จให้เราเข้า http://localhost:81 จะเจอกับหน้าเว็บ

เข้ามาครั้งแรกให้เราใส่ค่าดังนี้ ในการเข้าสู่ระบบ
- Email: admin@example.com
- Password: changeme
จากนั้นมันจะพาเราไปสมัครผู้ใช้งานใหม่

3. วิธีการใช้ Nginx Proxy Manager UI และกำหนดค่า?
Nginx Proxy Manager มาพร้อมกับเว็บที่ใช้งานง่ายซึ่งช่วยให้สามารถกำหนดค่าและจัดการ Nginx เป็น Proxy server ได้
3.1 แดชบอร์ด
มาพร้อมกับสิ่งที่ชัดเจนซึ่งแสดงสรุปของ Proxy Hosts, Redirection Hosts, Streams และ 404 Hosts การออกแบบแดชบอร์ดช่วยให้เราดูสถานะของเซิร์ฟเวอร์ได้อย่างรวดเร็วและนำทางไปยังส่วนของการกำหนดค่าต่างๆ ได้อย่างรวดเร็ว

3.2 Hosts
ส่วนนี้แสดงรายชื่อ host ทั้งหมด รวมถึง Proxy Hosts, Redirection Hosts, Streams และ 404 Hosts แต่ Host ที่สำคัญคือ Proxy Hosts ซึ่งแสดงแหล่งที่มาและปลายทาง การกำหนดค่า SSL และสถานะออนไลน์

3.3 Access Lists
ส่วนนี้ช่วยให้เราจัดการ Access Lists ได้ โดยให้ความปลอดภัยเพิ่มเติมด้วยการจำกัดว่าผู้ใช้คนใดสามารถดูหรือจัดการ hosts ต่างๆ ได้

3.4 ใบรับรอง SSL
ส่วนนี้จะแสดงใบรับรอง SSL ทั้งหมดที่พร้อมใช้งานหรือใช้งานอยู่ รวมถึงรายละเอียด เช่น ผู้ให้บริการและวันที่หมดอายุ

3.5 ผู้ใช้
ส่วนผู้ใช้ช่วยให้เราจัดการผู้ใช้ได้โดยตรง โดยจะแสดงภาพรวมของสิทธิ์ของผู้ใช้และความสามารถในการเพิ่มผู้ใช้ใหม่หรือแก้ไขผู้ใช้ที่มีอยู่

3.6 บันทึกการตรวจสอบ
ส่วนนี้ของ UI จะแสดงประวัติการดำเนินการที่เกิดขึ้นภายใน Proxy Manager บันทึกการตรวจสอบนี้ประกอบด้วยเหตุการณ์ การอัปเดตการกำหนดค่า และการต่ออายุใบรับรอง SSL

4. ตัวอย่างการตั้งค่า Proxy Hosts
การใช้ UI ของ Nginx Proxy Manager ช่วยให้เราสามารถสร้างและจัดการ Proxy Hosts พร้อมใช้งานใบรับรอง SSL และปรับแต่งการตั้งค่าต่าง ๆ ได้อย่างง่ายดายโดยไม่ต้องมีความรู้เกี่ยวกับ Nginx หรือใช้ command-line เลย
4.1 ตั้งค่า Proxy Host
- ไปที่ Hosts > Proxy Hosts แล้วคลิก Add Proxy Host
- ป้อนชื่อโดเมน เลือก HTTP หรือ HTTPS และระบุที่อยู่ IP ภายในและพอร์ตของแอพพลิเคชั่นที่เรากำลังใช้
- เราสามารถเปลี่ยนพารามิเตอร์ เช่น Location, กำหนด SSL และเปลี่ยนค่า Nginx แบบกำหนดเองได้จากที่นี่

4.2 กำหนดค่า SSL
ไปที่เมนู SSL Certificates คลิกที่ Add SSL Certificate เลือกขอ SSL ใหม่ผ่าน Let’s Encrypt หรือเพิ่มใบรับรองของเราเองโดยระบุ certificate และ private key ได้เลย
- กด Add SSL Certificate แล้วเลือก Let’s Encrypt จากนั้นระบุโดเมน, เพิ่มอีเมล และยอมรับข้อกำหนดการบริการของ Let’s Encrypt และสามารถกดทดสอบใบรับรองนี้ได้

- กลับไปที่ Hosts > Proxy Hosts แล้วกดแก้ไข host ที่ต้องการ มันจะแสดง Edit Proxy Host ให้เมนู SSL จากนั้นคลิกที่ SSL Certificate เลือก ssl ที่เราสร้างไว้ แล้วกดบันทึกได้เลย

เพียงเท่านี้เราก็สามารถเข้าแอพพลิคชั่นของเราผ่าน https ได้แล้ว สะดวกสบายสุด ๆ
