reverse proxy

reverse proxy ใน cloudpanel คืออะไร ทำงานยังไง

reverse proxy ใน cloudpanel คืออะไร ทำงานยังไง

Reverse Proxy (รีเวิร์สพร็อกซี) ใน CloudPanel เป็นฟีเจอร์ที่สำคัญมาก โดยเฉพาะเมื่อคุณต้องการรันแอปพลิเคชันที่ไม่ได้เขียนด้วย PHP (เช่น Node.js, Python, หรือ Go) บนเซิร์ฟเวอร์ของคุณครับ

ผมขออธิบายตามขั้นตอนเพื่อให้คุณเห็นภาพชัดเจนนะครับ


1. ภาพรวม: Reverse Proxy คืออะไร?

ก่อนจะพูดถึง CloudPanel เรามาดูแนวคิดของ Reverse Proxy กันก่อนครับ

stell-hosted service) ซึ่งอาจจะรันอยู่บนพอร์ต (Port) แปลกๆ เช่น 3000, 8080 หรือ 5001

  • ปัญหา: โดยทั่วไป ผู้ใช้งานอินเทอร์เน็ตจะเข้าเว็บผ่านพอร์ตมาตรฐานคือ 80 (สำหรับ http) และ 443 (สำหรับ https) เขาคงไม่อยากจำว่าต้องเข้าเว็บคุณผ่าน mydomain.com:3000
  • ทางออก (Reverse Proxy): เราจึงตั้ง NGINX (ซึ่งเป็นเว็บเซิร์ฟเวอร์ที่ CloudPanel ใช้) ให้ทำหน้าที่เป็น “พนักงานต้อนรับ” ครับ

การทำงานของ Reverse Proxy

การทำงานของมันง่ายมากครับ:

  1. ผู้ใช้งาน พิมพ์ https://app.yourdomain.com (ซึ่งใช้พอร์ต 443) เข้ามาในเบราว์เซอร์
  2. Reverse Proxy (NGINX) ที่ตั้งค่าไว้ใน CloudPanel จะรับคำขอนี้ไว้
  3. NGINX จะมองไปที่ “หลังบ้าน” (Backend) แล้วส่งต่อ (proxy) คำขอนี้ไปยังแอปพลิเคชันจริงของคุณที่รันอยู่ เช่น http://127.0.0.1:3000
  4. เมื่อแอปฯ (เช่น Node.js) ทำงานเสร็จและส่งคำตอบกลับมา NGINX ก็จะรับคำตอบนั้น แล้วส่งกลับไปให้ผู้ใช้งาน

ประโยชน์หลักๆ คือ:

  • ผู้ใช้งานเข้าถึงแอปฯ ของคุณผ่านโดเมนเนมสวยๆ และพอร์ตมาตรฐาน
  • CloudPanel (NGINX) สามารถจัดการเรื่อง SSL/TLS (HTTPS) ให้คุณได้เลย โดยที่แอปฯ หลังบ้านของคุณไม่ต้องยุ่งเรื่องนี้
  • คุณสามารถรันหลายๆ แอปฯ (หลายพอร์ต) บนเซิร์ฟเวอร์เดียว แต่ใช้โดเมนย่อย (Subdomain) แยกกันได้

2. Reverse Proxy “ใน CloudPanel” ทำงานยังไง

ใน CloudPanel กระบวนการนี้ถูกทำให้ง่ายมากๆ ผ่าน User Interface (UI) ครับ

ปกติเวลาคุณสร้าง “Site” (เว็บไซต์) ใน CloudPanel คุณจะเลือกประเภท (Application) เป็น “PHP” ใช่ไหมครับ? แต่ CloudPanel อนุญาตให้คุณเปลี่ยน “แม่แบบ” (VHost Template) ของไซต์นั้นได้

ขั้นตอนการตั้งค่าใน CloudPanel

สมมติว่าคุณมีแอป Node.js ที่รันรออยู่ที่พอร์ต 3000 บนเซิร์ฟเวอร์ของคุณ (รันผ่าน pm2 หรือ systemd ก็ตาม)

  1. สร้าง Site: ไปที่ CloudPanel แล้วสร้าง Site ใหม่ (เช่น app.mydomain.com) เลือก PHP ไปก่อนก็ได้
  2. ไปที่ VHost: เมื่อสร้างเสร็จ ให้เข้าไปที่หน้า “Manage” ของ Site นั้น แล้วคลิกที่เมนู “VHost”
  3. เปลี่ยน Template: คุณจะเห็นช่องให้เลือก “Template” ให้เปลี่ยนจาก PHP-FPM (หรือเทมเพลต PHP ที่คุณใช้) ไปเป็น “Reverse Proxy”
  4. ตั้งค่า Proxy Pass:
    • เมื่อเลือก “Reverse Proxy” จะมีช่องใหม่โผล่ขึ้นมาชื่อ “Proxy Pass”
    • ในช่องนี้ ให้คุณใส่ URL ของแอปพลิเคชันหลังบ้านของคุณ
    • สำคัญมาก: ถ้าแอปฯ รันบนเครื่องเดียวกับ CloudPanel ให้ใช้ 127.0.0.1 (หรือ localhost)
    • ตัวอย่าง: http://127.0.0.1:3000 (ถ้าแอปฯ คุณรันพอร์ต 3000)
  5. บันทึก: กด “Save”

โค้ดที่ CloudPanel สร้างให้

เบื้องหลังการคลิก “Save” ของคุณ CloudPanel จะไปแก้ไขไฟล์คอนฟิก (Config) ของ NGINX สำหรับไซต์นี้ (อยู่ที่ /etc/nginx/sites-available/) โดยอัตโนมัติ โดยจะเพิ่มส่วนที่สำคัญที่สุดคือ location / เข้าไปแบบนี้ครับ:

# นี่คือตัวอย่างโค้ดที่ CloudPanel สร้างให้ (อย่างง่าย)
# เมื่อคุณเลือกเทมเพลต Reverse Proxy

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name app.mydomain.com;

    # ... (ส่วนของการตั้งค่า SSL/TLS ที่ CloudPanel จัดการให้) ...

    # === นี่คือหัวใจของ Reverse Proxy ===
    location / {
        # ส่งต่อทุกคำขอไปยัง URL ที่คุณกรอก
        proxy_pass http://127.0.0.1:3000; 
        
        # ตั้งค่า Header เพื่อให้แอปฯ หลังบ้านรู้ว่าใครติดต่อมา
        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-Proto $scheme;
        
        # (อาจมีการตั้งค่า WebSocket เพิ่มเติม ถ้าจำเป็น)
    }

    # ... (ส่วนอื่นๆ เช่น access log, error log) ...
}

สรุป
Reverse Proxy ใน CloudPanel ก็คือการใช้ NGINX เป็นตัวกลาง (ประตูหน้า) เพื่อรับการจราจรเว็บ (HTTP/HTTPS) แล้วส่งต่อไปยังแอปพลิเคชัน (เช่น Node.js, Python, Docker Container) ที่รันอยู่บนพอร์ตอื่นในเซิร์ฟเวอร์เดียวกัน โดยที่คุณไม่ต้องไปยุ่งกับการแก้ไขไฟล์ NGINX Config เองโดยตรงครับ

หากคุณมีโปรเจกต์ที่ต้องใช้ Node.js หรือแอปฯ อื่นๆ ที่ไม่ใช่ PHP ฟีเจอร์นี้คือสิ่งที่คุณต้องใช้เลยครับ!

Comments

comments