nginx单域名绑定多个ip的核心目的是实现高可用、负载分担或dns轮询配合下的后端容灾;一是监听本机多个ip统一处理同一域名请求,二是通过upstream反向代理将该域名请求分发至多个后端ip实现负载均衡与故障转移。

Nginx 二进制安装后,单个域名绑定多个 IP 的核心目的通常是实现高可用、负载分担或 DNS 轮询配合下的后端容灾。注意:Nginx 本身不直接“让一个域名指向多个 IP”(那是 DNS 层的事),但它可以监听多个本地 IP 并响应同一域名请求,或作为反向代理将同一域名的请求分发到多个后端 IP。两种常见且实用的配置方式如下:
单域名 + 多监听 IP(同端口,同 server_name)
适用于你有多个本机 IP(如 192.168.1.100、192.168.1.101),希望用户通过同一个域名(如 example.com)访问时,无论解析到哪个 IP,都能由这台 Nginx 统一处理。
- 确保系统已为网卡添加多个 IPv4 地址(Windows 或 Linux 均需手动配置,非自动获取)
- 在
nginx.conf的server块中,用多个listen指令指定不同 IP,但共用server_name example.com
server {
listen 192.168.1.100:80;
listen 192.168.1.101:80;
server_name example.com;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
✅ 优点:配置简洁;无需修改 DNS,适合内网多入口测试或双线路接入
⚠️ 注意:客户端访问时,DNS 需提前将 example.com 解析到这两个 IP 中的任一(或通过轮询),Nginx 只负责“接住”并统一响应
单域名 + 反向代理至多个后端 IP(负载均衡)
这是更典型的生产用法:用户只访问 example.com(解析到 Nginx 所在服务器的单一公网 IP),Nginx 将请求按策略分发到多个真实业务服务器(IP 不同)。
- 在
http块顶部定义 upstream(支持权重、健康检查等)
upstream backend_servers {
server 192.168.1.200:8080 weight=3;
server 192.168.1.201:8080 weight=2;
server 192.168.1.202:8080 backup;
}
- 对应
server块中仅监听一个地址(如0.0.0.0:80或具体 IP),转发全部请求
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
✅ 优点:隐藏后端结构;天然支持故障转移与平滑扩容;DNS 只需解析一次
⚠️ 注意:后端服务必须能正确处理 Host: example.com 请求头;建议启用 proxy_next_upstream 做失败重试
验证与调试要点
- 运行
nginx -t确认语法无误 - 使用
ss -tlnp | grep :80(Linux)或netstat -ano | findstr :80(Windows)检查监听 IP 是否生效 - 若用 hosts 文件测试,可临时添加多行:
192.168.1.100 example.com 192.168.1.101 example.com
浏览器刷新时可能因 DNS 缓存只走其一,建议用
curl -H "Host: example.com" http://192.168.1.100分别验证
不复杂但容易忽略











