温馨提示×

CentOS上Node.js如何进行网络配置

小樊
44
2025-09-20 01:26:41
栏目: 编程语言

一、前置准备:安装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应用的端口配置需修改代码或使用环境变量,确保应用能接收网络请求:

  1. 直接修改代码:在应用入口文件(如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}/`); }); 
  2. 使用环境变量:通过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端口、处理静态资源、提升安全性。步骤如下:

  1. 安装Nginx
    sudo yum install -y nginx sudo systemctl start nginx sudo systemctl enable nginx 
  2. 配置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; } } 
  3. 重启Nginx
    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 

六、验证网络访问

  1. 启动Node.js应用:node app.js(或通过systemd服务启动)。
  2. 在服务器本地测试:curl http://localhost:3000,应返回Hello World
  3. 在外部设备测试:通过浏览器访问http://yourdomain.com(或公网IP),确认应用可访问。

七、优化建议

  • 使用systemd管理服务:创建/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 
  • HTTPS加密:使用Let’s Encrypt免费证书,通过Nginx配置HTTPS,提升数据传输安全性。

0