温馨提示×

centos nodejs如何配置反向代理

小樊
46
2026-07-20 01:21:53
栏目: 编程语言

CentOS 上,Node.js 本身一般不直接对外暴露,而是通过 反向代理(Reverse Proxy) 来转发请求。最常见、稳定的方案是 Nginx + Node.js。下面给你一套从零到可用的完整配置示例。


一、架构说明

用户请求
   ↓
Nginx(80 / 443)
   ↓
Node.js(如 3000 端口)

二、安装 Node.js(如未安装)

1️⃣ 使用 NodeSource(推荐)

curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs

验证:

node -v
npm -v

三、启动 Node.js 服务(示例)

app.js

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200);
  res.end('Hello Node.js');
});

server.listen(3000, () => {
  console.log('Node.js running on port 3000');
});

启动:

node app.js

✅ 此时 只能本机访问 3000 端口


四、安装并配置 Nginx

1️⃣ 安装 Nginx

sudo yum install -y epel-release
sudo yum install -y nginx

2️⃣ 启动并设置开机自启

sudo systemctl start nginx
sudo systemctl enable nginx

五、配置 Nginx 反向代理

1️⃣ 编辑配置文件

sudo vi /etc/nginx/conf.d/nodejs.conf

2️⃣ 反向代理配置示例

server {
    listen 80;
    server_name example.com;  # 改为你的域名或服务器 IP

    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_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

✅ 最关键的一行:

proxy_pass http://127.0.0.1:3000;

六、检查并应用配置

sudo nginx -t
sudo systemctl reload nginx

浏览器访问:

http://服务器IP 或 http://example.com

✅ 看到 Node.js 返回内容即成功


七、常见问题排查

1️⃣ 端口被防火墙拦截

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

或关闭防火墙(不推荐生产):

sudo systemctl stop firewalld

2️⃣ Node.js 进程自动退出

✅ 建议使用进程管理工具:

使用 PM2(推荐)

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

八、HTTPS(可选但强烈推荐)

使用 Let’s Encrypt:

sudo yum install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

证书会自动续期。


九、完整架构总结

组件 作用
Node.js 应用服务
Nginx 反向代理 / 静态资源
PM2 Node.js 进程管理
HTTPS 安全访问

如果你需要:

  • 多 Node 实例负载均衡
  • Docker + Nginx 反向代理
  • CentOS 7 / 8 / Stream 区别
  • 生产环境最佳实践

可以直接告诉我你的使用场景,我可以给你定制方案。

0