Node.js在CentOS上的网络配置指南
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. 验证配置
-
检查Node.js应用是否运行:
curl http://localhost:3000 # 本地访问
若返回
Hello World
,说明应用正常运行。 -
检查防火墙是否允许流量:
curl http://< 服务器公网IP> :3000 # 外部访问
若返回正常响应,说明防火墙配置正确。
-
检查反向代理是否生效:
若配置了Nginx,通过域名访问(如http://yourdomain.com
),应显示Node.js应用的响应。
通过以上步骤,即可在CentOS上完成Node.js的网络配置,使其能够通过IP或域名对外提供服务。根据实际需求,可进一步优化配置(如SSL加密、负载均衡等)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js在CentOS上的网络配置指南
本文地址: https://pptw.com/jishu/732455.html