首页主机资讯Debian系统Node.js网络配置如何设置

Debian系统Node.js网络配置如何设置

时间2025-11-21 14:26:06发布访客分类主机资讯浏览684
导读:Debian系统Node.js网络配置指南 一 系统网络与DNS先行 选择管理方式:传统 ifupdown(编辑 /etc/network/interfaces)或 NetworkManager(使用 nmcli)。两者并存会互相覆盖,建...

Debian系统Node.js网络配置指南

一 系统网络与DNS先行

  • 选择管理方式:传统 ifupdown(编辑 /etc/network/interfaces)或 NetworkManager(使用 nmcli)。两者并存会互相覆盖,建议只保留一种。
  • 使用 ifupdown 配置示例(静态IP):
    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
    
    使用 DHCP 时:
    auto eth0
    iface eth0 inet dhcp
    
    应用变更:sudo systemctl restart networking,随后用 ip addrping 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 = 30
    
    应用:sudo sysctl -p
  • Node.js 侧优化:启用 HTTP/2、开启 压缩、合理使用 缓存(Redis/Memcached)、必要时使用 集群模式 充分利用多核。

四 常见问题排查

  • 端口被占用:检查并结束占用进程,或启用上面的 EADDRINUSE 重试逻辑。
  • 监听地址错误:仅本机能访问通常是监听了 127.0.0.1,改为 0.0.0.0;或云主机未放行安全组/防火墙。
  • 接口名不一致:用 ip link 确认实际网卡名(如 eth0/enp0s3),避免配置到不存在的接口。
  • DNS 解析异常:用 resolvectl statusnslookup 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
Debian如何优化getconf性能 Debian系统Node.js服务如何监控

游客 回复需填写必要信息