У меня есть следующие настройки:
(internet) ---> [ pfSense Box ] /-> [ Apache / PHP server ]
[running HAproxy] --+--> [ Apache / PHP server ]
+--> [ Apache / PHP server ]
\-> [ Apache / PHP server ]
Для HTTP-запросов это прекрасно работает , запросы распределяются на мои серверы Apache просто отлично. Для запросов SSL у меня было HAproxy, распределяющее запросы с использованием балансировки нагрузки TCP, и это работало, однако, поскольку HAproxy не действовал как прокси, он не добавлял X-Forwarded-For
заголовок HTTP, и серверы Apache / PHP не знали клиента реальный IP-адрес.
Итак, я добавил stunnel
перед HAproxy, читая, что stunnel может добавить X-Forwarded-For
заголовок HTTP. Однако пакет, который я мог бы установить в pfSense, не добавляет этот заголовок ... также, это, очевидно, убивает мою способность использовать запросы KeepAlive , которые я действительно хотел бы сохранить. Но самой большой проблемой, которая убила эту идею, было то, что stunnel преобразовал HTTPS-запросы в простые HTTP-запросы, поэтому PHP не знал, что SSL был включен, и пытался перенаправить на сайт SSL.
Как я могу использовать HAproxy для балансировки нагрузки между несколькими серверами SSL, позволяя этим серверам знать IP-адрес клиента и знать, что SSL используется? И если возможно, как я могу сделать это на моем сервере pfSense?
Или я должен отказаться от всего этого и просто использовать nginx?
X-Forwarded-For
, смотрите здесь .