首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨多个不同服务器的域名路由

跨多个不同服务器的域名路由
EN

Server Fault用户
提问于 2019-03-18 15:31:14
回答 3查看 1.8K关注 0票数 0

如何使用一个公共IP地址来承载跨越局域网中多个服务器的多个域名?

假设我有5个web服务器,服务于5个不同的域名,使用5种不同的服务器端技术,而我目前有5个公共IP地址。

DNS被设置,这样5个域名中的每一个都映射到每个相应的公共ip,并且防火墙有端口转发器,因此所有请求都被转发到局域网内正确服务器的相应内部ip地址。

我将如何合并为使用一个IP而不是5个?我理解动态dns的工作原理,如果只有一个web服务器,我就没有问题了。然而,由于有多个web服务器,使用不同的技术,我不知道如何使用一个公共IP来完成。

是否有一个服务器(最好是基于Linux的),我可以发送所有请求,能够透明地路由每个请求到一个特定的内部IP+port严格基于域名的请求?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2019-03-18 17:58:55

您可以尝试使用反向代理来设置负载均衡器。

它基本上是一个所有请求都被发送到的服务器,但它不处理请求;相反,它只发送要由其背后的一个服务器处理的请求。

有不同的算法可以将请求发送到正确的服务器,以避免对其中一台服务器的工作量超过其他服务器,但是对于基本设置而言,即使使其随机或一次向一台服务器发送请求也可以工作。由于向实际服务器提出请求的人是Nginx,您将丢失原始用户的IP地址。要使它再次可用,您必须设置Nginx和服务器,以将原始IP地址作为HTTP报头传递(例如X转发-For)。

票数 1
EN

Server Fault用户

发布于 2019-03-18 18:55:11

Apache或Nginx反向代理就可以了。

下面是nginx反向代理的一个简单示例,包括负载平衡。

代码语言:javascript
复制
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/;
     }
   }
}
票数 2
EN

Server Fault用户

发布于 2020-10-27 14:12:13

当然你可以用负载平衡器来处理。但适当的方法是使用服务器名称指示(SNI)。不要改变方向盘,尤其是在网络/互联网问题上.

票数 -1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/958811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档