首页主机资讯Node.js在CentOS上的网络配置有哪些要点

Node.js在CentOS上的网络配置有哪些要点

时间2025-10-17 20:37:23发布访客分类主机资讯浏览1353
导读:1. Node.js应用自身网络配置 Node.js应用需明确监听的IP地址和端口,以控制网络访问范围。若要让应用监听所有网络接口(允许外部访问),可将IP设为0.0.0.0;若仅限本地访问,则用127.0.0.1。例如: const ex...

1. Node.js应用自身网络配置
Node.js应用需明确监听的IP地址和端口,以控制网络访问范围。若要让应用监听所有网络接口(允许外部访问),可将IP设为0.0.0.0;若仅限本地访问,则用127.0.0.1。例如:

const express = require('express');
    
const app = express();
    
const port = 3000;
    
app.get('/', (req, res) =>
     res.send('Hello World'));
    
app.listen(port, '0.0.0.0', () =>
 console.log(`Server running at http://0.0.0.0:${
port}
    /`));

此外,可通过环境变量(如process.env.PORT)区分开发、测试、生产环境的端口配置,提升灵活性。

2. CentOS系统防火墙配置
CentOS默认使用firewalld作为防火墙管理工具,需开放Node.js应用的端口(如3000、80、443)以允许外部流量。操作步骤如下:

  • 确保firewalld运行并设置开机自启:
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    
  • 开放指定端口(以3000端口为例,--permanent表示永久生效):
    sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
    
  • 重新加载防火墙配置使更改生效:
    sudo firewall-cmd --reload
    
  • 验证端口是否开放:
    sudo firewall-cmd --list-all  # 查看public区域的开放端口
    

若需更严格的控制,可创建专门的nodejs区域并将端口添加至该区域。

3. SELinux策略调整(若启用)
若SELinux处于enforcing模式(默认开启),可能会阻止Node.js绑定到非特权端口(1024以下)或外部访问。解决方法:

  • 临时允许(测试用,重启失效):
    sudo setenforce 0
    
  • 永久允许:编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,然后重启系统。
  • 针对特定端口授权(如3000端口):
    sudo semanage port -a -t http_port_t -p tcp 3000
    

此操作需安装policycoreutils-python-utils包(sudo yum install policycoreutils-python-utils)。

4. 反向代理配置(生产环境推荐)
使用Nginx或Apache作为反向代理,可提升安全性(隐藏Node.js端口)、处理SSL加密、负载均衡及静态文件服务。以Nginx为例:

  • 安装Nginx:
    sudo yum install 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;
    
        }
    
    }
        
    
  • 重新加载Nginx:
    sudo systemctl reload nginx
    

配置后,用户通过http://yourdomain.com访问Node.js应用,无需暴露3000端口。

5. 端口与网络接口绑定

  • 端口占用检查:启动Node.js应用前,需确认端口未被其他服务占用(如80端口可能被Apache占用):
    sudo netstat -tulnp | grep :3000  # 检查3000端口
    
    若端口被占用,可修改Node.js应用的端口或停止占用服务。
  • 绑定特定IP:若服务器有多个网络接口(如内网192.168.1.100和外网eth0),可将Node.js绑定到指定IP,限制访问来源:
    app.listen(port, '192.168.1.100', () =>
     console.log(`Server running at http://192.168.1.100:${
    port}
        /`));
        
    
    此配置仅允许内网设备访问。

6. 系统服务化管理(可选但推荐)
将Node.js应用配置为systemd服务,可实现开机自启、进程守护(自动重启崩溃的进程)。操作步骤:

  • 创建服务文件(/etc/systemd/system/nodejs.service):
    [Unit]
    Description=Node.js Application Service
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/node /path/to/your/app.js  # 替换为应用路径
    Restart=always
    User=nginx  # 推荐使用非root用户(如nginx、nodeuser)
    Group=nginx
    Environment=NODE_ENV=production
    
    [Install]
    WantedBy=multi-user.target
    
  • 启用并启动服务:
    sudo systemctl enable nodejs
    sudo systemctl start nodejs
    
  • 查看服务状态:
    sudo systemctl status nodejs
    

此方式提升了Node.js应用的稳定性和可管理性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Node.js在CentOS上的网络配置有哪些要点
本文地址: https://pptw.com/jishu/729356.html
CentOS时间戳如何定制化 如何在CentOS上使用NPM包管理器

游客 回复需填写必要信息