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

怎么为Node.js程序配置使用Nginx服务器

Nginx 配置 proxy sudo 858    来源:    2025-04-26

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


一、为什么需要Nginx?

  1. 负载均衡:分发流量到多个Node实例
  2. 静态文件服务:高效处理静态资源
  3. SSL终止:集中管理HTTPS证书
  4. 缓冲保护:缓解高并发压力

二、基础配置步骤

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 http = require('http');
const server = http.createServer((req, res) => {
  res.end('Hello from Node!');
});
server.listen(3000, '127.0.0.1');  // 只监听本地

3. 创建Nginx配置文件

/etc/nginx/sites-available/新建配置文件(如yourdomain.conf):

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/ {
        alias /path/to/your/static/files/;
        expires 30d;
        access_log off;
    }
}

4. 启用配置

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

三、高级配置选项

1. HTTPS配置(Let's Encrypt)

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

自动更新证书:

sudo certbot renew --dry-run

2. 负载均衡配置

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

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

3. WebSocket支持

确保包含以下头信息:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

4. 性能调优

client_max_body_size 10m;
proxy_buffers 16 32k;
proxy_buffer_size 64k;
proxy_busy_buffers_size 128k;

四、调试技巧

  1. 检查Nginx错误日志:
tail -f /var/log/nginx/error.log
  1. 测试配置语法:
sudo nginx -t
  1. 查看当前活动连接:
sudo netstat -tulnp | grep nginx

五、安全建议

  1. 禁用服务器标识:
server_tokens off;
  1. 设置安全头:
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
  1. 限制请求方法:
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

通过以上配置,你的Node.js应用将获得: ✅ 更高的并发处理能力 ✅ 自动HTTPS支持 ✅ 静态资源加速 ✅ 专业级的访问日志 ✅ 生产环境级的安全防护

建议使用PM2管理Node进程:

npm install pm2 -g
pm2 start app.js -i max
pm2 save
pm2 startup