如何使用一个公共 IP 地址来托管跨局域网中多个服务器的多个域名?
假设我有 5 个 Web 服务器,服务于 5 个不同的域名,使用 5 种不同的服务器端技术,我目前有 5 个公共 IP 地址。
设置 DNS 以便 5 个域名中的每一个都映射到各自的公共 IP,并且防火墙具有端口转发器,因此所有请求都被转发到 LAN 内正确服务器的各自内部 IP 地址。
我将如何巩固使用一个 IP 而不是 5 个?我了解动态 dns 的工作原理,如果只有一个网络服务器,我不会有任何问题。但是,由于有多个 Web 服务器,使用不同的技术,我不确定如何仅使用一个公共 IP 来完成。
是否有一个服务器(最好是基于 Linux 的)我可以将所有请求发送到,它能够根据请求中的域名将每个请求透明地路由到特定的内部 IP + 端口?
Apache 或 Nginx 反向代理就可以了。
下面是一个使用 nginx 反向代理的简单示例,包括负载均衡。
您可以尝试使用反向代理设置负载均衡器。
它基本上是所有请求都发送到的服务器,但它不处理请求;相反,它只发送要由其后面的服务器之一处理的请求。
有不同的算法可以将请求发送到正确的服务器,以免其中一台服务器的工作量超过其他服务器,但对于基本设置,即使使其随机或一次向一台服务器发送请求也可以工作。由于向实际服务器发出请求的是 Nginx,因此您将丢失原始用户的 IP 地址。要使其再次可用,您必须设置 Nginx 和您的服务器以将原始 IP 地址作为 HTTP 标头传递(例如 X-Forwarded-For)。
当然,您可以使用负载平衡器来处理它。但合适的方法是使用服务器名称指示 (SNI)。不要重新发明轮子,尤其是在网络/互联网问题中......