Я разместил свой домен на платформе хостинга с общим IP. Я настроил HAProxy на Google Compute Engine для маршрутизации трафика. Но когда я попытался получить доступ к IP-адресу сервера HAProxy, я получил страницу по умолчанию для моей платформы общего хостинга (например, страницу по умолчанию CPanel, когда мы пытались получить доступ к сайту через IP-адрес).
Вот дополнительная конфигурация, которую я добавил в конфигурацию HAProxy:
resolvers public-dns
nameserver dns1 4.4.4.4:53
nameserver dns2 8.8.8.8:53
frontend http
bind *:80
stats uri /haproxy?stats
default_backend site-backend
backend site-backend
mode http
balance roundrobin
option httpclose
option forwardfor
reqadd Host:\ app.domain_name.com
server mysite app.domain_name.com:80 resolvers public-dns check inter 1000 resolve-prefer ipv4
Как получить правильный веб-сайт с помощью HAProxy?
HAProxy подключается к app.domain_name.com (кстати, не забудьте настроить для этого блок Resolvers, поскольку HAProxy обычно не выполняет повторный поиск разрешения), но отправляет исходный запрос через дословно. Отсутствует заголовок Host, который ваш провайдер использует для различения запросов.
Документация HAProxy описывает использование reqadd
конфигурация, чтобы иметь болт HAProxy в заголовке хоста:
reqadd Host:\ app.domain_name.com
Пожалуйста, также посмотрите раздел резолверов чтобы убедиться, что вы правильно обрабатываете разрешение DNS для app.domain_name.com, иначе оно может неожиданно сломаться, когда провайдер перетасовывает свои IP-адреса.