โฮมแล็บและโฮสต์เอง

หลายบริการหลังเซิร์ฟเวอร์เดียวด้วย Nginx Proxy Manager

เมื่อเซิร์ฟเวอร์เครื่องเดียวรันหลายโปรเจกต์ สุดท้ายก็จะชนกับพอร์ต 80 และ 443 ซึ่งมีได้เพียงโปรเซสเดียวที่รับฟังได้ บทความบน Habr จากบล็อกของ Selectel แสดงทีละขั้นตอนว่าจะแก้ปัญหานี้ด้วย Nginx Proxy Manager ได้อย่างไร

ผู้เขียนอธิบายปัญหาก่อน ได้แก่ พอร์ตที่ต้องมีสิทธิ์พิเศษ กฎ 'หนึ่งพอร์ตต่อหนึ่งตัวรับฟัง' ปัญหา CORS เมื่อแยกฟรอนต์เอนด์และแบ็กเอนด์ด้วยพอร์ตต่างกัน และการไม่มี HTTPS รีเวิร์สพร็อกซีแก้ปัญหานี้ได้โดยทำหน้าที่เป็นตัวกลางและส่งต่อทราฟฟิกตามโดเมนและพาธ ข้อดีเพิ่มเติมคือไฟร์วอลล์เปิดแค่พอร์ต 22, 80 และ 443 ก็พอ

สภาพแวดล้อมทดสอบคือ VDS ขนาด 2 vCPU, RAM 2 GB และ NVMe 40 GB รันด้วย Ubuntu 24.04 และ Docker จากรีโพซิทอรีทางการ สร้างเครือข่ายด้วยคำสั่ง docker network create proxy แล้วเริ่มคอนเทนเนอร์ jc21/nginx-proxy-manager พร้อมวอลุ่มสำหรับข้อมูลและใบรับรอง ผมชอบที่หน้าจอแอดมินบนพอร์ต 81 ผูกไว้กับ 127.0.0.1 เท่านั้น และเข้าถึงผ่านอุโมงค์ SSH

จากนั้นตั้งค่าโฮสต์พร็อกซี โดยใส่ชื่อคอนเทนเนอร์ในช่อง Forward Hostname และผูกใบรับรอง SSL ในแท็บ SSL ใช้ traefik/whoami ในการทดสอบ นอกจากนี้ยังอธิบายกรณีที่แอปรันบนโฮสต์โดยตรง โดยดึงที่อยู่เกตเวย์ของเครือข่าย Docker ด้วย docker network inspect และตั้งไฟร์วอลล์ไม่ให้เข้าถึงแอปโดยข้ามพร็อกซีได้

มีข้อสังเกตบางส่วน ตัวอย่างปนโดเมนหลายชื่อ และอิมเมจใช้แท็ก latest ซึ่งอาจทำให้ทำซ้ำผลได้ยากขึ้นเมื่อเวลาผ่านไป อย่างไรก็ตาม นี่เป็นจุดเริ่มต้นที่ดีสำหรับคนที่อยากรันหลายบริการที่บ้านหรือบน VDS โดยไม่ต้องแก้ไขคอนฟิก nginx ด้วยมือ

ที่มา: Habr (บล็อก Selectel)

ความคิดเห็น 0

เป็นคนแรกที่แสดงความคิดเห็น ด้วยภาษาใดก็ได้

เข้าสู่ระบบเพื่อแสดงความคิดเห็น