为Node.js程序配置Nginx作为反向代理服务器是常见的生产环境部署方案,以下是详细配置指南:
# Ubuntu/Debian
sudo apt update && sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
确保你的应用监听本地端口(如3000):
const app = require('express')();
app.listen(3000, '127.0.0.1'); // 只监听本地
在/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;
}
}
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl restart nginx
使用Let's Encrypt免费证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
证书会自动续期。
upstream node_cluster {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
keepalive 64;
}
server {
location / {
proxy_pass http://node_cluster;
}
}
确保包含这些头:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 调整缓冲区
proxy_buffers 16 32k;
proxy_buffer_size 64k;
# 超时设置
proxy_connect_timeout 90s;
proxy_send_timeout 90s;
proxy_read_timeout 90s;
ps aux | grep node
sudo tail -f /var/log/nginx/error.log
root
路径正确sudo chmod -R 755 /path/to/static
X-Forwarded-Proto
头:
nginx
proxy_set_header X-Forwarded-Proto $scheme;
pm2 start app.js
bash
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
nginx
gzip on;
gzip_types text/plain text/css application/json application/javascript;
通过以上配置,你的Node.js应用将获得生产级Web服务器的所有优势,同时保持应用的灵活性。建议定期检查Nginx和Node.js的日志文件以监控运行状态。