溫馨提示×

Node.js在CentOS上的網絡配置有哪些要點

小樊
50
2025-10-17 11:56:02
欄目: 編程語言

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應用的穩定性和可管理性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女