开始输入,可搜索发票、服务、域名、工单,以及 更多...
使用站群服务器时,常见需求是让每个网站解析并监听在不同的 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 技术支持。