Как установить имя сервера на сервере Apache + PHP с балансировкой нагрузки? - PullRequest
0 голосов
/ 26 мая 2020

Я установил сервер Apache с балансировкой нагрузки, используя этот учебник , и все работает нормально со стороны Apache. У меня есть балансировщик нагрузки с mod_proxy и две веб-головы, которые на практике обслуживают запрос.

Но я попытался запустить на них свое приложение PHP, и возникла проблема с настройкой файлов cookie. Во время исследования я обнаружил, что имя сервера соответствует IP-адресу сервера (а не реальному имени сервера, которое я установил в httpd.conf). Это команда, которую я использовал для установки файла cookie;

setcookie("mycookie", $value, time() + 86400, "/", $_SERVER['SERVER_NAME'], false, true);

Причина, по которой я использовал здесь $ _SERVER ['SERVER_NAME'], заключается в том, что мое приложение для каждого клиента имеет отдельный адрес (например, client1.xyz. com, client2.xyz.com, et c), поэтому имя сервера не согласовано для всех пользователей.

Если я повторю значение, если $ _SERVER ['SERVER_NAME'], он покажет IP адрес сервера, а не имя сервера. Следовательно, повар ie теряется при переключении между серверами.

Как я могу установить имя сервера в веб-заголовках кластера?

1 Ответ

0 голосов
/ 27 мая 2020

Я сам нашел ответ. Это можно сделать, установив ProxyPreserveHost в балансировщике нагрузки (внутри директивы Proxy). Таким образом, заголовок клиента будет передан подсистемой балансировки нагрузки рабочим.

ProxyPreserveHost On
...