在 Debian 上配置 Node.js 的反向代理,最常见、稳定的方案是使用 Nginx 或 Caddy。下面以 Nginx 为例,分步说明(也顺带提一下 Caddy)。
假设你已经在 Debian 上:
http://127.0.0.1:3000
example.com),或仅用 IP 测试sudo apt update
sudo apt install nginx -y
启动并设置开机自启:
sudo systemctl enable nginx
sudo systemctl start nginx
sudo nano /etc/nginx/sites-available/nodeapp
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)
sudo ln -s /etc/nginx/sites-available/nodeapp /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl restart nginx
推荐使用 PM2:
sudo npm install -g pm2
pm2 start app.js
pm2 startup
pm2 save
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com
Certbot 会自动修改 Nginx 配置并启用 HTTPS。
如果你喜欢“零配置 HTTPS”:
sudo apt install caddy
/etc/caddy/Caddyfile:
example.com {
reverse_proxy 127.0.0.1:3000
}
sudo systemctl restart caddy
检查:
curl http://127.0.0.1:3000
可在 Nginx 中直接处理:
location /static/ {
root /var/www/nodeapp;
}
如果你愿意,可以告诉我:
我可以直接给你一份「可复制即用」的配置。