温馨提示×

debian nodejs如何配nginx

小樊
42
2026-09-14 11:26:23
栏目: 编程语言

下面给你一份在 Debian 上用 Node.js + Nginx 的常见部署方案,适合 Web 服务(如 Express、NestJS、Next.js 等)。


一、安装 Node.js(Debian)

1. 使用 NodeSource(推荐)

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

验证:

node -v
npm -v

二、运行 Node.js 服务

假设你的 Node 项目监听:

http://127.0.0.1:3000

启动方式(示例):

cd /var/www/myapp
npm install
node app.js

⚠️ 生产环境不要用 node app.js 直接跑,推荐:

  • pm2
  • systemd

用 PM2(最简单)

sudo npm i -g pm2
pm2 start app.js --name myapp
pm2 save
pm2 startup

三、安装 Nginx

sudo apt update
sudo apt install nginx

四、配置 Nginx 反向代理

1. 新建配置文件

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

2. 示例配置(HTTP)

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

3. 启用站点

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

五、开启 HTTPS(推荐)

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

Certbot 会自动修改 Nginx 配置并开启 443。


六、防火墙(如有)

sudo ufw allow 'Nginx Full'

七、常见问题

Node 服务起不来?

  • 检查端口是否被占用
  • 查看日志:pm2 logsjournalctl -u nginx

WebSocket 不通?

  • 确保 Upgrade / Connection header 已配置

静态资源?

Nginx 可直接处理:

location /static/ {
    root /var/www/myapp/public;
}

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

  • Node 框架(Express / Nest / Next)
  • 是否用 Docker
  • 是否要 HTTPS / 多域名

我可以给你 更精确的配置

0