返回博客
五月 23, 2026指南

如何设置 Nginx 反向代理

通过 Nginx 代理 Node.js、Docker 等应用,支持 WebSocket 与 VPS SSL。

如何设置 Nginx 反向代理

反向代理让 Nginx 接收公网 HTTP/HTTPS 流量并转发到后端(如 localhost:3000 的 Node.js、Docker 容器、Python API)。这是 Hiddence VPS 生产部署的必备配置。

前提条件

  • Nginx 已安装并运行
  • 后端在 localhost 监听(如 127.0.0.1:3000)
  • 域名已指向 VPS(用于 SSL)
  • 防火墙已开放 80 和 443 端口

基本反向代理配置

为域名创建站点配置:

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

WebSocket 支持

Socket.io、许多仪表盘和实时应用需要:

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;
}

使用 Certbot 添加 HTTPS

HTTP 正常后申请免费证书:

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

提示

  • 流式/SSE 可按需设置 proxy_buffering off
  • 为文件上传设置 client_max_body_size
  • 多个后端可用不同子域名
  • 多后端负载均衡使用 upstream 块
  • 出现 502 Bad Gateway 时查看 error.log