下面给你一个Debian + Node.js + Nginx 的常见配置流程(以 Debian 11/12 为例,Node 用 18/20 均可)。
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
验证:
node -v
npm -v
假设你的项目在 /var/www/myapp:
cd /var/www/myapp
npm install
本地测试:
node app.js
# 或
npm start
假设监听:
http://127.0.0.1:3000
apt update
apt install -y nginx
启动并设置开机自启:
systemctl enable --now nginx
新建站点配置:
nano /etc/nginx/sites-available/myapp
示例配置(最常用):
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;
}
}
启用站点:
ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
测试并重载:
nginx -t
systemctl reload nginx
npm install -g pm2
pm2 start app.js
pm2 save
pm2 startup
nano /etc/systemd/system/myapp.service
[Unit]
Description=Node.js App
After=network.target
[Service]
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node app.js
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now myapp
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com
502 Bad Gateway
静态文件 交给 Nginx:
location /static/ {
root /var/www/myapp/public;
}
如果你愿意,可以告诉我:
我可以直接给你一套完整可用配置。