两台物理服务器,相同的 IP,nginx 设置

两台物理服务器,相同的 IP,nginx 设置

我有两台连接到同一个网络并使用 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在收到请求时对另一个域/服务器执行操作。

相关内容