插件窝 干货文章 如何为Node.js程序配置使用Nginx服务器

如何为Node.js程序配置使用Nginx服务器

Nginx proxy 配置 sudo 756    来源:    2025-04-24

为Node.js程序配置Nginx作为反向代理服务器是常见的生产环境部署方案,以下是详细配置指南:


一、为什么需要Nginx?

  1. 处理静态文件更高效
  2. 提供SSL/TLS加密
  3. 负载均衡
  4. 缓冲请求保护Node.js应用
  5. 更好的HTTP/2支持

二、完整配置步骤

1. 安装Nginx

# Ubuntu/Debian
sudo apt update && sudo apt install nginx

# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx

2. 配置Node.js应用

确保你的应用监听本地端口(如3000):

const app = require('express')();
app.listen(3000, '127.0.0.1');  // 只监听本地

3. 创建Nginx配置文件

/etc/nginx/sites-available/yourdomain.com(或/etc/nginx/conf.d/)添加:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.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_cache_bypass $http_upgrade;
    }

    # 静态文件处理(可选)
    location /static/ {
        root /path/to/your/app;
        expires 30d;
    }
}

4. 启用配置

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置
sudo systemctl restart nginx

5. 配置SSL(推荐)

使用Let's Encrypt免费证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

证书会自动续期。


三、高级配置选项

1. 负载均衡(多Node实例)

upstream node_cluster {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
    keepalive 64;
}

server {
    location / {
        proxy_pass http://node_cluster;
    }
}

2. WebSocket支持

确保包含这些头:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

3. 性能调优

# 调整缓冲区
proxy_buffers 16 32k;
proxy_buffer_size 64k;

# 超时设置
proxy_connect_timeout 90s;
proxy_send_timeout 90s;
proxy_read_timeout 90s;

四、常见问题解决

1. 502 Bad Gateway

  • 检查Node.js是否运行:ps aux | grep node
  • 查看Nginx错误日志:sudo tail -f /var/log/nginx/error.log

2. 静态文件404

  • 确保root路径正确
  • 检查文件权限:sudo chmod -R 755 /path/to/static

3. 重定向循环

  • 确保应用没有强制HTTPS(应由Nginx处理)
  • 检查X-Forwarded-Proto头: nginx proxy_set_header X-Forwarded-Proto $scheme;

五、最佳实践

  1. 使用PM2管理Node进程:pm2 start app.js
  2. 配置防火墙: bash sudo ufw allow 80/tcp sudo ufw allow 443/tcp
  3. 定期备份Nginx配置
  4. 启用Gzip压缩: nginx gzip on; gzip_types text/plain text/css application/json application/javascript;

通过以上配置,你的Node.js应用将获得生产级Web服务器的所有优势,同时保持应用的灵活性。建议定期检查Nginx和Node.js的日志文件以监控运行状态。