温馨提示×

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

小樊
53
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