У нас есть 5 различных мест сервера каждый содержащий приблизительно 30 серверов каждый, каждый сервер представляет URL и служит и HTTP и HTTPS. Они все идентичны, однако обеспечивают отличающийся на основе содержимого на том, где они приняли решение видеть содержание от, они могут выбрать региональное содержание путем изменения их пользовательских настроек, и нам связали их для привязки представлений в DNS.
У нас есть сервер DNS, который разрешает имена к IP-адресам согласно их местоположению и отправляет трафик им. Это работает отлично, однако когда кто-то изменяет регион, несколько вещей кэшируются между пользователем/браузером/OS/и т.д., главным образом материал DNS.
То, что мы хотели бы сделать, использовать весь одинаковый, IP-адреса для каждого доменного имени, и иметь все решают к ряду серверов HAProxy, которые внутренне проксируют/направят трафик к на основе их IP и пользовательских конфигураций. Таким образом, DNS будет всегда указывать на них на те же серверы фронтэнда и разрешение их DNS кэшировать все.
Я полагал, что мог сделать это с HAProxy, поэтому когда клиент соединяется с blog.test.com, он создает прокси в серверах фронтенда для высказывания нашего южноафриканского сайта blog.test.com - однако, он должен был бы сделать это IP-адресом иначе, DNS запутается..
Я могу установить HAProxy, чтобы принять соединения для blog.test.com и внутренне соединиться с 1.2.3.4 и провести какие-либо заголовки как название сайта / псевдоним?
Эта haproxy
конфигурация будет маршрутизировать соединения к вашим сайтам, не нарушая их.
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.
режим http
будет работать, но я не вижу, как это поможет вам. Вам пришлось бы расшифровывать все SSL, и заново зашифровывать для безопасной переадресации на соответствующий сайт.
Также обратите внимание, что при такой конструкции, задержки будут запретительными для клиентов, которые топологически далеки от экземпляра haproxy
, потому что их пакеты, скорее всего, сделают круглый путь к прокси, и обратно к локальным серверам приложений (которые, вероятно, близки к клиенту). Вы, вероятно, можете компенсировать это добавлением экземпляра haproxy
в каждое место, так что клиенты обычно будут использовать локальный прокси (за исключением того, что они перемещаются и полагаются на кэшированный DNS).