Debian系统Node.js网络配置如何设置
导读:Debian系统Node.js网络配置指南 一 系统网络与DNS先行 选择管理方式:传统 ifupdown(编辑 /etc/network/interfaces)或 NetworkManager(使用 nmcli)。两者并存会互相覆盖,建...
Debian系统Node.js网络配置指南
一 系统网络与DNS先行
- 选择管理方式:传统 ifupdown(编辑 /etc/network/interfaces)或 NetworkManager(使用 nmcli)。两者并存会互相覆盖,建议只保留一种。
- 使用 ifupdown 配置示例(静态IP):
使用 DHCP 时:auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4
应用变更:auto eth0 iface eth0 inet dhcpsudo systemctl restart networking,随后用ip addr、ping www.debian.cn验证。 - 使用 NetworkManager(nmcli)快速配置静态以太网:
nmcli con mod eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4" autoconnect yes nmcli con up eth0 - DNS 生效要点:若用 ifupdown,推荐在接口配置中使用 dns-nameservers;用
resolvectl status检查;如被 systemd-resolved 管理,避免直接改写 /etc/resolv.conf。 - 防火墙放行:例如 UFW
sudo ufw allow 80,443/tcp;云主机还需在控制台安全组放行对应端口。
二 Node.js监听与对外发布
- 基本监听(绑定所有地址):
const http = require('http'); http.createServer((req, res) => { res.end('Hello from Debian'); } ).listen(3000, '0.0.0.0', () => { console.log('Listening on 0.0.0.0:3000'); } ); - 指定网卡或IPv6:
// 仅内网口 server.listen(3000, '192.168.1.100'); // 仅IPv6 server.listen(3000, '::1'); - 处理端口占用(EADDRINUSE)与优雅重试:
server.on('error', (e) => { if (e.code === 'EADDRINUSE') { console.log('Address in use, retrying...'); setTimeout(() => server.close(() => server.listen(3000, '0.0.0.0')), 1000); } } ); - 反向代理更稳妥(Nginx示例,启用 HTTP/2):
启用站点并热重载:server { listen 80; server_name your_domain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/ & & sudo nginx -t & & sudo systemctl reload nginx。 - 进程管理:使用 PM2 守护与集群
npm i -g pm2 pm2 start app.js -i max --name api pm2 save & & pm2 startup
三 高并发网络优化
- 文件描述符限制(影响并发连接数):
# 临时 ulimit -n 65535 # 永久 echo "* soft nofile 65535" | sudo tee -a /etc/security/limits.conf echo "* hard nofile 65535" | sudo tee -a /etc/security/limits.conf - TCP/IP 内核参数(/etc/sysctl.conf):
应用:net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30sudo sysctl -p。 - Node.js 侧优化:启用 HTTP/2、开启 压缩、合理使用 缓存(Redis/Memcached)、必要时使用 集群模式 充分利用多核。
四 常见问题排查
- 端口被占用:检查并结束占用进程,或启用上面的 EADDRINUSE 重试逻辑。
- 监听地址错误:仅本机能访问通常是监听了 127.0.0.1,改为 0.0.0.0;或云主机未放行安全组/防火墙。
- 接口名不一致:用
ip link确认实际网卡名(如 eth0/enp0s3),避免配置到不存在的接口。 - DNS 解析异常:用
resolvectl status与nslookup example.com排查;若用 ifupdown,优先在接口配置里设置 dns-nameservers。 - 代理与协议:反向代理时设置
proxy_http_version 1.1与必要的请求头;需要 HTTP/2 时优先在 Nginx 启用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian系统Node.js网络配置如何设置
本文地址: https://pptw.com/jishu/753296.html
