温馨提示×

Node.js在CentOS上的网络配置指南

小樊
48
2025-10-21 19:50:12
栏目: 编程语言

Node.js在CentOS上的网络配置指南

1. 安装Node.js环境

在配置网络前,需先安装Node.js及npm(Node包管理器)。推荐通过NodeSource存储库安装特定版本(如14.x),避免系统默认版本过旧:

# 导入NodeSource GPG密钥并设置存储库
curl -sL https://rpm.nodesource.com/setup_14.x | sudo -E bash -
# 安装Node.js及npm
sudo yum install -y nodejs
# 验证安装
node -v  # 查看Node.js版本
npm -v   # 查看npm版本

2. 配置网络接口(静态IP/端口)

2.1 配置静态IP(可选)

若需为服务器分配固定IP,编辑网络配置文件(如ifcfg-ens33,路径/etc/sysconfig/network-scripts/):

DEVICE=ens33       # 网卡名称(通过`ip a`命令查看)
BOOTPROTO=static   # 改为静态IP
IPADDR=192.168.1.100  # 静态IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1   # 网关地址
DNS1=8.8.8.8       # DNS服务器
DNS2=8.8.4.4
ONBOOT=yes         # 开机自启

修改后重启网络服务:

# CentOS 7(使用network服务)
sudo systemctl restart network
# CentOS 8及以上(使用NetworkManager)
sudo nmcli connection down ens33 && sudo nmcli connection up ens33

2.2 配置Node.js应用监听端口

在Node.js代码中,通过app.listen()指定监听的IP和端口。若需允许外部访问,必须将IP设为0.0.0.0(监听所有网络接口):

const express = require('express');
const app = express();
const port = 3000; // 自定义端口(如8080、3000等)

app.get('/', (req, res) => {
  res.send('Hello World from Node.js on CentOS!');
});

// 监听所有网络接口的指定端口
app.listen(port, '0.0.0.0', () => {
  console.log(`Server is running at http://0.0.0.0:${port}`);
});

3. 防火墙配置(允许流量通过)

CentOS默认使用firewalld作为防火墙,需开放Node.js应用的端口(如3000):

# 开放指定端口(3000)
sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
# 重新加载防火墙配置(使更改生效)
sudo firewall-cmd --reload
# 验证端口是否开放
sudo firewall-cmd --zone=public --query-port=3000/tcp  # 返回yes表示成功

若需开放HTTP(80)/HTTPS(443)服务(如反向代理场景),可直接添加服务:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

4. SELinux配置(若启用)

若系统启用了SELinux(默认开启),可能会阻止Node.js应用接受外部连接。可通过以下步骤调整:

4.1 临时设置为宽容模式(测试用)

sudo setenforce 0  # 关闭SELinux(重启后恢复)

若应用能正常访问,说明是SELinux导致的问题,需进一步配置永久策略。

4.2 创建自定义SELinux策略

允许Node.js应用监听指定端口(如3000):

# 安装policycoreutils-python-utils(用于semanage)
sudo yum install -y policycoreutils-python-utils
# 将端口添加到http_port_t类型(允许Web服务使用)
sudo semanage port -a -t http_port_t -p tcp 3000
# 验证端口是否添加成功
sudo semanage port -l | grep http_port_t

5. 使用反向代理(生产环境推荐)

为提升安全性、支持SSL加密及负载均衡,建议使用Nginx作为反向代理。

5.1 安装Nginx

sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx  # 开机自启

5.2 配置Nginx反向代理

编辑Nginx配置文件(如/etc/nginx/conf.d/nodejs.conf),添加以下内容:

server {
    listen 80;                  # 监听80端口(HTTP)
    server_name yourdomain.com; # 替换为你的域名或公网IP

    location / {
        proxy_pass http://localhost:3000;  # 转发到Node.js应用(监听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;
    }
}

保存后重新加载Nginx:

sudo systemctl reload nginx

5.3 域名解析(可选)

若需通过域名访问,需在DNS提供商处添加A记录,将域名指向服务器公网IP。

6. 验证配置

  1. 检查Node.js应用是否运行

    curl http://localhost:3000  # 本地访问
    

    若返回Hello World,说明应用正常运行。

  2. 检查防火墙是否允许流量

    curl http://<服务器公网IP>:3000  # 外部访问
    

    若返回正常响应,说明防火墙配置正确。

  3. 检查反向代理是否生效
    若配置了Nginx,通过域名访问(如http://yourdomain.com),应显示Node.js应用的响应。

通过以上步骤,即可在CentOS上完成Node.js的网络配置,使其能够通过IP或域名对外提供服务。根据实际需求,可进一步优化配置(如SSL加密、负载均衡等)。

0