![两台物理服务器,相同的 IP,nginx 设置](https://linux22.com/image/1014841/%E4%B8%A4%E5%8F%B0%E7%89%A9%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E7%9B%B8%E5%90%8C%E7%9A%84%20IP%EF%BC%8Cnginx%20%E8%AE%BE%E7%BD%AE.png)
我有两台连接到同一个网络并使用 No-IP 服务的物理服务器,我为它们设置了动态 DNS 解析。
一台服务器xx.ddns.net,第二台服务器是yy.ddns.net。
我想解决这个问题:
将 CNAME 指向xx.ddns.net为了: test1.example.com
将 CNAME 指向yy.ddns.net为了: test2.example.com
我已经有指向 CNAME 的 test1.example.comxx.ddns.net并且成功了,但是当我设置yy.ddns.net在另一台服务器上,我在 Nginx 上收到 404 错误。
这是 Nginx 配置的一部分测试1:
server {
server_name xx.ddns.net test1.example.com
}
我设置了相同的测试2:
server {
server_name yy.ddns.net test2.example.com
}
这很有趣,因为现在我两个网站都得到了 404二十和耶耶,但是当我访问test1.example.com它工作正常 - 网站加载。但是,当我尝试访问test2.example.com我也收到 404 错误。
有人能告诉我如何在两台不同的物理服务器上使用具有相同 IP 的 No-IP 和 Nginx 吗?谢谢。
答案1
如果两台服务器具有“相同的 IP”,我假设您的意思是外部 IP,并且它们位于某个本地网络中的 NAT(路由器)后面。
仅仅因为您已将它们设置为使用不同的域名,并不会改变所有浏览器都会将它们解析为单个 IP 的事实,而这就是它们为了请求网站数据将与之通信的 IP。
在这种情况下,哪个网站会被加载取决于您的路由器设置。例如,如果您将端口 80 转发到本地 IPxx.ddns.net
计算机,那么只要两个 CNAME 仍解析为同一 IP 地址,两个网站都会从xx.ddns.net
计算机加载。
为了能够为外部访问者提供来自 LAN 中不同服务器的站点,您需要路由器能够检查Host
请求标头并将代理请求转发到适当的本地 IP。您的路由器不太可能支持此功能。
因此,另一种方法是选择其中一个 NGINX 服务器来承担双重任务,即托管任一域,并proxy_pass
在收到请求时对另一个域/服务器执行操作。