Как проксировать трафик IP с помощью имен/псевдонимов сервера?

У нас есть 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 и провести какие-либо заголовки как название сайта / псевдоним?

0
задан 26 August 2014 в 04:22
1 ответ

Эта 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).

.
1
ответ дан 4 December 2019 в 17:12

Теги

Похожие вопросы