การติดตั้ง Nginx + Reverse Proxy สำหรับ Node.js บน Ubuntu Server 25.10

การติดตั้ง Nginx + Reverse Proxy สำหรับ Node.js บน Ubuntu Server 25.10

เมื่อคุณพัฒนา Node.js Application เสร็จแล้ว การเปิดให้ผู้ใช้งานเข้าถึงผ่าน Internet อย่างปลอดภัยและมีประสิทธิภาพเป็นขั้นตอนที่สำคัญมาก การใช้ Reverse Proxy เข้ามาช่วยจัดการ traffic เป็นแนวทางมาตรฐานที่ใช้กันใน Production โดยเฉพาะการใช้ Nginx ซึ่งมีประสิทธิภาพสูง รองรับ concurrent connections จำนวนมาก และสามารถทำ SSL, Load Balancing ได้

บทความนี้แนะนำการตั้งค่า Nginx เป็น Reverse Proxy ให้ Node.js Server แบบ Step-by-Step พร้อมใช้งานจริง


พื้นฐานที่ต้องมี 

  • Ubuntu Server 25.10
  • ติดตั้ง Node.js และมีแอปรันที่ port เช่น 3000
  • มีสิทธิ์ sudo
  • เปิด port 80 แล้ว

ขั้นตอนที่ 1 ติดตั้ง Nginx

sudo apt update
sudo apt install -y nginx
 

ตรวจสอบสถานะ

sudo systemctl status nginx
 

ขั้นตอนที่ 2 ทดสอบ Nginx

เปิด browser

http://<IP-Server>
 

ถ้าเห็นหน้า Welcome ของ Nginx แสดงว่าพร้อมใช้งานแล้ว


ขั้นตอนที่ 3 สร้าง Reverse Proxy Config

– ไปที่ directory config

cd /etc/nginx/sites-available
 

– สร้างไฟล์ใหม่

sudo nano nodeapp
 

ตัวอย่าง Config Reverse Proxy

server {

listen 80;
server_name your_domain_or_ip;

location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;

proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

 

อธิบาย

  • proxy_pass → ชี้ไปยัง Node.js app
  • Upgrade → รองรับ WebSocket
  • Host → ส่ง header เดิมไป backend

ขั้นตอนที่ 4 Enable Site

 
sudo ln -s /etc/nginx/sites-available/nodeapp /etc/nginx/sites-enabled/
 

 ปิด Default Config (ป้องกันชนกัน)

sudo rm /etc/nginx/sites-enabled/default
 

ขั้นตอนที่ 5: ตรวจสอบ Config

sudo nginx -t
– ถ้าได้
 
syntax is ok
test is successful
 

ขั้นตอนที่ 6 Restart Nginx

sudo systemctl restart nginx
 

ขั้นตอนที่ 7 ทดสอบ Reverse Proxy

-เปิด

http://<IP-Server>
 จะเห็นผลลัพธ์จาก Node.js (ไม่ต้องใส่ port 3000)

(Advanced) เพิ่ม HTTPS ด้วย Let’s Encrypt

– ติดตั้ง Certbot

sudo apt install certbot python3-certbot-nginx -y
– ขอ SSL
sudo certbot –nginx
 

⚠️ ข้อควรระวัง

  • อย่า expose port 3000 โดยตรงใน production
  • ใช้ firewall จำกัด access
  • ใช้ process manager เช่น PM2
  • ตรวจสอบ log
sudo journalctl -u nginx
 

📊 ภาพรวมการทำงาน

 
 

📌 สรุป

การใช้ Nginx เป็น Reverse Proxy สำหรับ Node.js เป็นแนวทางมาตรฐานที่ช่วยเพิ่มทั้ง ความปลอดภัย ประสิทธิภาพ และความยืดหยุ่นของระบบ โดยผู้ใช้จะเชื่อมต่อผ่าน Nginx (port 80/443) แทนที่จะเข้าถึง Node.js โดยตรง ทำให้สามารถจัดการ SSL, Load balancing และ Security ได้ง่ายขึ้น

เมื่อคุณตั้งค่าเสร็จแล้ว ระบบของคุณจะพร้อมสำหรับการใช้งานจริงในระดับ Production และสามารถต่อยอดไปสู่การทำ High Availability หรือ Microservices ได้ทันที


ที่มา: 
– https://medium.com/%409ovind/what-is-a-web-server-and-role-of-nginx-in-it-09dfcbd5ed26
– https://tamerlan.dev/how-to-set-up-nginx-load-balancing-a-step-by-step-guide
– https://iainramsey.com/how_its_made