Да, вам нужно использовать ключевое слово accept-proxy
после bind
в объявлении внешнего интерфейса.Также будет полезно прочитать о связанном send-proxy
ключевом слове , которое используется в данной "службе HAproxy третьей стороны".
Протокол PROXY может быть возвращен в исходное состояниеиспользуя следующую конфигурацию HAproxy:
frontend app-proxy
bind *:5443 accept-proxy
mode tcp
option tcplog
default_backend app-httpd
backend app-httpd
mode tcp
server app1 127.0.0.1:443 check
Это примет протокол PROXY на порту 5443, обрезает его и отправит данные TCP на 443
.
Если вы хотите манипулироватьHTTP-пакеты в зашифрованных SSL-данных TCP, вам необходимо иметь доступ к правильным SSL-сертификатам (к которым ваш веб-сервер уже должен иметь доступ).Это то, что вы, вероятно, захотите сделать.
frontend app-proxy
bind *:5443 accept-proxy ssl crt /path/to/certnkey-file.pem
mode http
option httplog
default_backend app-httpd
backend app-httpd
mode http
server app1 127.0.0.1:443 check ssl verify none
Преимущество последнего подхода заключается в том, что исходные данные клиента сохраняются при прохождении через прокси, так что вы знаете, какой IP-адрес вашегопосетительЧто, в общем-то, и является идеей использования протокола PROXY!HAproxy автоматически обновит заголовок X-Forwarded-For
с правильным IP-адресом, который был передан по протоколу PROXY.