如何使用一个公共IP地址来承载跨越局域网中多个服务器的多个域名?
假设我有5个web服务器,服务于5个不同的域名,使用5种不同的服务器端技术,而我目前有5个公共IP地址。
DNS被设置,这样5个域名中的每一个都映射到每个相应的公共ip,并且防火墙有端口转发器,因此所有请求都被转发到局域网内正确服务器的相应内部ip地址。
我将如何合并为使用一个IP而不是5个?我理解动态dns的工作原理,如果只有一个web服务器,我就没有问题了。然而,由于有多个web服务器,使用不同的技术,我不知道如何使用一个公共IP来完成。
是否有一个服务器(最好是基于Linux的),我可以发送所有请求,能够透明地路由每个请求到一个特定的内部IP+port严格基于域名的请求?
发布于 2019-03-18 17:58:55
您可以尝试使用反向代理来设置负载均衡器。
它基本上是一个所有请求都被发送到的服务器,但它不处理请求;相反,它只发送要由其背后的一个服务器处理的请求。
有不同的算法可以将请求发送到正确的服务器,以避免对其中一台服务器的工作量超过其他服务器,但是对于基本设置而言,即使使其随机或一次向一台服务器发送请求也可以工作。由于向实际服务器提出请求的人是Nginx,您将丢失原始用户的IP地址。要使它再次可用,您必须设置Nginx和服务器,以将原始IP地址作为HTTP报头传递(例如X转发-For)。
发布于 2019-03-18 18:55:11
Apache或Nginx反向代理就可以了。
下面是nginx反向代理的一个简单示例,包括负载平衡。
http {
upstream backend_server_2 { # load balanced server block
ip_hash;
server 10.1.1.2:8080 weight=2;
server 10.1.1.3:8080 weight=1;
}
server {
listen public_ip:80;
server_name example1.com;
location / {
proxy_pass http://10.1.1.1/;
}
}
server {
listen public_ip:80;
server_name example2.com;
location / {
proxy_pass http://backend_server_2/;
}
}
}发布于 2020-10-27 14:12:13
当然你可以用负载平衡器来处理。但适当的方法是使用服务器名称指示(SNI)。不要改变方向盘,尤其是在网络/互联网问题上.
https://serverfault.com/questions/958811
复制相似问题