開始輸入,可搜尋發票、服務、域名、工單,以及 更多...
使用站群伺服器時,常見需求是讓每個網站解析並監聽在不同的 IP 上,便於獨立管理、證書配置與風險隔離。本文介紹如何在站群伺服器為每個網站分配獨立 IP:在 Nginx 中使用 listen IP:80/443 繫結指定地址、在寶塔面板中為站點設定獨立 IP、簡要說明出口 IP 與 SNAT,並給出站群 SEO 的實用建議。適用於 Linux 下的 Nginx(Debian/Ubuntu、CentOS/Rocky/AlmaLinux 均可)。
Nginx 只能監聽系統中已存在的地址,否則會報 cannot assign requested address:
ip -4 addr show dev eth0 | grep inet在每個站點的 server 塊中,把 listen 80; 改為 listen 指定IP:80;。配置檔案一般位於 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/:
server {
listen 203.0.113.11:80;
server_name site1.example www.site1.example;
root /var/www/site1;
index index.html index.php;
}
server {
listen 203.0.113.12:80;
server_name site2.example www.site2.example;
root /var/www/site2;
index index.html index.php;
}這樣即使請求的 Host 頭不匹配,訪問某個 IP 也只會命中繫結在該 IP 上的站點。
HTTPS 同理,為每個站點的 443 埠指定獨立 IP,並配置各自的證書:
server {
listen 203.0.113.11:443 ssl;
server_name site1.example www.site1.example;
ssl_certificate /etc/nginx/ssl/site1.example/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/site1.example/privkey.pem;
root /var/www/site1;
}每個 IP 只承載一個 HTTPS 站點時,即使訪客客戶端不支援 SNI 也能拿到正確證書。
建議為每個 IP 新增一個 default_server,拒絕未知域名訪問,避免他人把域名解析到你的 IP 上產生映象內容:
server {
listen 203.0.113.11:80 default_server;
server_name _;
return 444;
}nginx -t && systemctl reload nginx
ss -lntp | grep nginx在 DNS 未生效前,可以用 curl --resolve 指定 IP 測試每個站點:
curl -I --resolve site1.example:80:203.0.113.11 http://site1.example/
curl -I --resolve site2.example:80:203.0.113.12 http://site2.example/寶塔面板新建站點時預設 listen 80(監聽全部 IP)。如需讓站點繫結獨立 IP,可在面板中開啟該網站的設定,進入配置檔案,將 listen 行改為指定 IP 後儲存:
listen 203.0.113.11:80;
listen 203.0.113.11:443 ssl;Nginx 的 listen 只決定入站使用哪個 IP。伺服器主動對外發起請求(如採集、API 呼叫、發郵件)時,預設使用主 IP 作為出口。如需讓某個站點用指定 IP 出站,可在程式中繫結源地址(例如 curl 的 --interface、PHP cURL 的 CURLOPT_INTERFACE),或讓該站點以獨立使用者執行,再用 iptables 按使用者做 SNAT:
useradd -r -s /sbin/nologin site1run
iptables -t nat -A POSTROUTING -o eth0 -m owner --uid-owner site1run -j SNAT --to-source 203.0.113.11
curl --interface 203.0.113.11 https://ifconfig.meiptables 規則需要配合 iptables-save 或 netfilter-persistent 才能在重啟後保留。
通常是 IP 未繫結到網絡卡,或埠被其他程式佔用。用 ip addr 與 ss -lntp 檢查。
檢查是否仍有 server 塊使用 listen 80 default_server,或 DNS 仍指向舊 IP。
可以,在 VirtualHost 中寫 <VirtualHost 203.0.113.11:80> 並配合 Listen 指令即可。
如仍無法解決,可提交工單聯絡 IMIDC 7×24 技術支援。