Используйте haproxy в качестве обратного прокси-сервера с приложением за интернет-прокси
Мне нужно интегрировать несколько веб-приложений на локальном и за пределами сайта под общим внутренним URL-адресом. Локальные приложения находятся в том же центре обработки данных, что и haproxy, но доступ к ним можно получить только через HTTP-прокси, поскольку сервер, на котором работает haproxy, не имеет прямого доступа в интернет. Поэтому я должен использовать интернет-прокси http, SOCKS также может быть вариантом.
Как я могу сказать haproxy, что бэкэнд может быть достигнут только через прокси ? Я бы предпочел не используйте дополнительный компонент, такой как socksify / proxifier / proxychains / tsocks / ... потому что это создает дополнительные накладные расходы.
на этом рисунке показаны компоненты, участвующие в настройке:
когда я запускаю это на машине С прямым подключением к интернету Я могу использовать эту конфигурацию, и она работает просто отлично:
frontend main
bind *:8000
acl is_extweb1 path_beg -i /policies
acl is_extweb2 path_beg -i /produkte
use_backend externalweb1 if is_extweb1
use_backend externalweb2 if is_extweb2
backend externalweb1
server static www.google.com:80 check
backend externalweb2
server static www.gmx.net:80 check
(очевидно, это не URL-адреса, с которыми я говорю, это просто пример)
Haproxy может проверить внешние приложения и маршрутизирует трафик к ним:
в безопасной среде компании, в которой я работаю, я должен использовать прокси-сервер, и haproxy не может подключиться к внешним приложениям. Как я могу включить haproxy для использования этих внешних серверов веб-приложений за HTTP-прокси (не требуется аутентификация), предоставляя доступ к ним через общую страницу http / через браузер ?
2 ответов
Я был заинтригован, чтобы заставить его работать, но я действительно не мог найти ничего в документации haproxy, поэтому я немного погуглил и нашел, что nginx и может сделать трюк, но это не для меня, после немного больше googleing я закончил тем, что нашел конфигурацию для apache это работает.
вот важная часть:
Listen 80
SSLProxyEngine on
ProxyPass /example/ https://www.example.com/
ProxyPassReverse /example/ https://www.example.com/
ProxyRemote https://www.example.com/ http://corporateproxy:port
ProxyPass /google/ https://www.google.com/
ProxyPassReverse /google/ https://www.google.com/
ProxyRemote https://www.google.com/ http://corporateproxy:port
Я уверен, что там должен быть способ перевести эту конфигурацию nginx и даже к HAProxy... если мне удастся найти время, я обновлю ответ своими выводами.
для работы apache вы также должны включить несколько модулей, я поставил репозиторий github С базовой конфигурацией докера, которая демонстрирует, не стесняйтесь взглянуть на это, чтобы увидеть полную рабочую конфигурацию.
Как насчет использования делегата (http://delegate.org/documents/) для этого, просто как идея.
haproxy -> delegate -f -vv -P127.0.0.1:8081 PROXY=<your-proxy>
http://delegate.org/delegate/Manual.shtml?PROXY
Я знаю, что это не элегантный, но это может сработать.
я протестировал эту настройку с помощью локального squid и этого вызова curl
echo 'GET http://www.php.net/' |curl -v telnet://127.0.0.1:8081
завитка называют simluates на графических интерфейсов по протоколу TCP звонок.