我们有5个不同的服务器位置,每个位置都包含大约30台服务器,每台服务器都代表一个URL并同时提供HTTP和HTTPS。 它们都是相同的,但是根据他们select查看内容的位置提供不同的内容,他们可以通过更改用户设置来select区域内容,并将它们绑定到绑定DNS中的视图。
我们有一个DNS服务器,根据它们的位置将名称parsing为IP地址,并将stream量发送给它们。 它工作的很好,但是当有人改变一个地区时,在用户/浏览器/操作系统等之间caching了几个东西,主要是DNS的东西。
我们想要做的是为每个域名使用所有相同的IP地址,并且将所有内容都parsing为一组HAProxy服务器,这些服务器将根据内部IP和用户configuration在内部代理/路由stream量。 这样,DNS将始终将其指向相同的前端服务器,并允许其DNScaching所有内容。
我想我可以用HAProxy做到这一点,所以当客户端连接到blog.test.com时,它会在前端服务器内部创build一个代理来说我们的南非网站blog.test.com – 但是,它需要这样做通过IP地址,否则DNS会感到困惑..
我可以设置HAProxy接受blog.test.com的连接,并在内部连接到1.2.3.4并传递任何标题,如站点名称/别名?
这haproxyconfiguration将路由连接到您的网站,unmolested。
frontend portal # site 1 bind 12.13.14.15:80 bind 12.13.14.15:443 # site 2 bind 12.13.14.16:80 bind 12.13.14.16:443 # ... mode tcp acl site1 dst 12.13.14.15 acl site2 dst 12.13.14.16 ... acl ssl dst_port 443 acl region1 src 82.0.0.0/7 ... use_backend site1_india_ssl if site1 region1 ssl use_backend site1_india if site1 region1 use_backend site1_south_africa_ssl if site1 region2 ssl use_backend site1_south_africa if site1 region2 ... use backend site2_india_ssl if site2 region1 ssl ...
您可以在不同的后端(如site1_india中的每个位置定义每个服务器,每个服务器都使用SSL变体以使用端口443。
mode http将工作,但我不明白它会如何帮助你。 你将不得不解密所有的SSL, 并重新encryption,以安全地转发到各自的网站。
还要注意,采用这种devise,对于拓扑结构远离haproxy实例的客户端来说,延迟将是过高的,因为他们的软件包可能会往返于代理服务器,然后返回到本地应用服务器(可能接近客户)。
您可以通过向每个位置添加一个haproxy实例来抵消这一点,这样客户端通常会使用本地代理(除了重新定位并依赖于caching的DNS)。