在过去的几周里,我试图了解如何在一个静态 IP 下设置多个 Web 服务器。我了解网络托管公司可能有很多静态 IP,但为一台服务器使用一个 IP 听起来效率不高。
我阅读了很多文章、帖子和观看的视频,其中提到了其中的一些。
我设置了 3 个 Web 服务器和一个 Windows 服务器来解析 DNS,我将端口 53 转发到 Windows Server 以侦听 DNS 请求。但是后来我才知道,当Web请求首先初始化时,DNS服务器在这种情况下解析IP它到达我的公共静态IP然后HTTP请求被发送到这个IP,此时我不明白可以采用什么方法来转发收到对相关 Web 服务器的 HTTP 请求。
请注意,我了解端口转发并且能够实现它,我也知道反向代理,但它们看起来不像专业的方法,我在这里寻找的是了解托管公司如何实现它。
这是我找到的一些相关帖子
https://serverfault.com/questions/965353/external-requests-to-internal-dns-server https://serverfault.com/questions/435791/internal-dns-server-provide-response-to-external-requests 当涉及到斜线后的地址时,DNS 是如何工作的?
这是我在这里分享的设置架构,以便您可以参考解释:
如果您认为需要更多信息或有改进我的问题的空间,请在评论中询问我,以便我知道缺少什么或如何改进我的问题。
是的,托管公司通常会通过为其服务器提供足够的 IP 地址来避免这个问题——每个 Web 服务器确实都有自己的专用 IP 地址。服务器 A 上托管的所有域都将使用地址 A,服务器 B 上的域具有 IP 地址 B,依此类推。
共享 IP 地址有其自身的低效率 - 您的路由器需要支持 NAT(通常不需要),因为每个 IP 有更多连接等,所以用完临时端口号变得更容易。所以如果你有IP 地址使用它们比囤积它们更有效。
但除此之外,“反向代理”仍然是答案。(这几乎是定义——任何将“将接收到的 HTTP 请求转发到相关 Web 服务器”的东西都称为反向代理。)。这是一种非常常见的方法——反向代理与常规网络服务器一起使用,或者将代理用作负载平衡器(例如 HAproxy),或者将代理用作容器的前端(例如 Traefik),等等。