下面给你一份在 Debian 上用 Node.js + Nginx 的常见部署方案,适合 Web 服务(如 Express、NestJS、Next.js 等)。
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
验证:
node -v
npm -v
假设你的 Node 项目监听:
http://127.0.0.1:3000
启动方式(示例):
cd /var/www/myapp
npm install
node app.js
⚠️ 生产环境不要用 node app.js 直接跑,推荐:
pm2systemdsudo npm i -g pm2
pm2 start app.js --name myapp
pm2 save
pm2 startup
sudo apt update
sudo apt install nginx
sudo nano /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com;
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;
}
}
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
Certbot 会自动修改 Nginx 配置并开启 443。
sudo ufw allow 'Nginx Full'
pm2 logs 或 journalctl -u nginxUpgrade / Connection header 已配置Nginx 可直接处理:
location /static/ {
root /var/www/myapp/public;
}
如果你愿意,可以告诉我:
我可以给你 更精确的配置。