温馨提示×

debian怎么配nodejs反向代理

小樊
47
2026-10-11 05:44:53
栏目: 编程语言

在 Debian 上配置 Node.js 的反向代理,最常见、稳定的方案是使用 Nginx 或 Caddy。下面以 Nginx 为例,分步说明(也顺带提一下 Caddy)。


一、前提条件

假设你已经在 Debian 上:

  • 安装并运行了 Node.js 服务
    例如监听在:
    http://127.0.0.1:3000
    
  • 已有一个域名(如 example.com),或仅用 IP 测试

二、安装 Nginx

sudo apt update
sudo apt install nginx -y

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

三、配置 Node.js 反向代理

1. 创建站点配置文件

sudo nano /etc/nginx/sites-available/nodeapp

2. 写入以下内容(示例)

server {
    listen 80;
    server_name example.com;  # 改成你的域名或服务器IP

    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;
        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;
        proxy_cache_bypass $http_upgrade;
    }
}

✅ Upgrade / Connection 头用于 WebSocket 支持(如 Socket.io)


3. 启用站点

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

4. 删除默认站点(可选)

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

5. 测试并重启 Nginx

sudo nginx -t
sudo systemctl restart nginx

四、让 Node.js 后台运行

推荐使用 PM2:

sudo npm install -g pm2
pm2 start app.js
pm2 startup
pm2 save

五、HTTPS(强烈推荐)

使用 Certbot(Let’s Encrypt)

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com

Certbot 会自动修改 Nginx 配置并启用 HTTPS。


六、Caddy 方案(更简单)

如果你喜欢“零配置 HTTPS”:

sudo apt install caddy

/etc/caddy/Caddyfile:

example.com {
    reverse_proxy 127.0.0.1:3000
}
sudo systemctl restart caddy

七、常见问题

502 Bad Gateway

  • Node.js 没启动
  • 端口写错
  • 防火墙限制

检查:

curl http://127.0.0.1:3000

静态文件

可在 Nginx 中直接处理:

location /static/ {
    root /var/www/nodeapp;
}

如果你愿意,可以告诉我:

  • 用的是 Express / Nest / 原生 http?
  • 是否有 WebSocket?
  • 是否用 Docker?

我可以直接给你一份「可复制即用」的配置。

0 踩