一、前置准备:安装Node.js 在CentOS上配置Node.js网络前,需先安装Node.js运行环境。推荐使用NodeSource仓库安装特定版本(如14.x),步骤如下:
# 导入NodeSource GPG密钥 curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash - # 安装Node.js及npm sudo yum install -y nodejs # 验证安装 node -v # 查看Node.js版本 npm -v # 查看npm版本 二、配置Node.js应用监听端口 Node.js应用的端口配置需修改代码或使用环境变量,确保应用能接收网络请求:
app.js)中,设置port变量为所需端口(如3000),并绑定到0.0.0.0(允许外部访问):const http = require('http'); const hostname = '0.0.0.0'; // 监听所有网络接口 const port = 3000; // 自定义端口 const server = http.createServer((req, res) => { res.statusCode = 200; res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); process.env.PORT读取环境变量,提升灵活性(生产环境常用):const port = process.env.PORT || 3000; // 优先使用环境变量,未设置则用3000 server.listen(port, '0.0.0.0', () => { console.log(`Server running on port ${port}`); }); 启动时指定端口:PORT=4000 node app.js。三、配置CentOS防火墙 CentOS默认使用firewalld管理防火墙,需允许应用端口通过:
# 允许指定端口(如3000)的TCP流量 sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp # 重新加载防火墙配置 sudo firewall-cmd --reload # 验证端口是否开放 sudo firewall-cmd --zone=public --query-port=3000/tcp # 返回yes表示开放 四、(可选)配置反向代理(推荐) 使用Nginx作为反向代理,可隐藏Node.js端口、处理静态资源、提升安全性。步骤如下:
sudo yum install -y nginx sudo systemctl start nginx sudo systemctl enable nginx /etc/nginx/conf.d/nodejs.conf(若目录不存在则创建),添加以下内容:server { listen 80; server_name yourdomain.com; # 替换为域名或公网IP location / { proxy_pass http://localhost:3000; # 转发到Node.js应用 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; } } sudo systemctl reload nginx 五、(可选)SELinux配置(若启用) 若系统启用SELinux,需允许Node.js监听非标准端口(如3000):
# 允许Node.js监听TCP端口3000 sudo semanage port -a -t http_port_t -p tcp 3000 # 验证配置 sudo semanage port -l | grep http_port_t 六、验证网络访问
node app.js(或通过systemd服务启动)。curl http://localhost:3000,应返回Hello World。http://yourdomain.com(或公网IP),确认应用可访问。七、优化建议
/etc/systemd/system/nodejs.service文件,实现应用开机自启、自动重启:[Unit] Description=Node.js Application After=network.target [Service] ExecStart=/usr/bin/node /path/to/app.js Restart=always User=nginx # 建议使用专用用户 Group=nginx Environment=NODE_ENV=production [Install] WantedBy=multi-user.target 启用并启动服务:sudo systemctl enable nodejs sudo systemctl start nodejs