Quay lại blog
Tháng Năm 23, 2026Hướng dẫn

Cách Thiết Lập Nginx Reverse Proxy

Proxy Node.js, Docker hoặc app khác qua Nginx với hỗ trợ WebSocket và SSL trên VPS.

Cách Thiết Lập Nginx Reverse Proxy

Reverse proxy cho phép Nginx nhận traffic HTTP/HTTPS công khai và chuyển tiếp tới app backend (Node.js cổng 3000, container Docker, API Python). Cần thiết cho triển khai production trên VPS Hiddence.

Điều kiện tiên quyết

  • Nginx đã cài và đang chạy
  • App backend lắng nghe trên localhost (vd. 127.0.0.1:3000)
  • Tên miền trỏ về VPS (cho SSL)
  • Cổng 80 và 443 mở trên firewall

Cấu hình reverse proxy cơ bản

Tạo cấu hình site cho tên miền:

bash
server {
    listen 80;
    server_name app.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        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;
    }
}

sudo nginx -t && sudo systemctl reload nginx

Hỗ trợ WebSocket

Cần cho Socket.io, nhiều dashboard và app realtime:

bash
location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
}

Thêm HTTPS với Certbot

Sau khi HTTP hoạt động, cấp chứng chỉ miễn phí:

bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d app.yourdomain.com

# Certbot will update your server block for SSL automatically

Mẹo

  • Dùng proxy_buffering off cho streaming/SSE nếu cần
  • Đặt client_max_body_size cho upload file
  • Chạy nhiều backend trên subdomain khác nhau
  • Dùng khối upstream để cân bằng tải nhiều backend
  • Kiểm tra error.log nếu gặp 502 Bad Gateway