Назад | Перейти на главную страницу

Настройте Apache для использования внешнего прокси-сервера для подключения к Интернету

В моем приложении я использую следующее правило перезаписи:

RewriteRule ^/ajax(.*) http://api.externalserver.com/$1 [P,QSA,L]

Теперь проблема в том, что моя корпоративная сеть требует, чтобы я использовал прокси-сервер HTTP для внешних подключений к Интернету.

Чтобы проиллюстрировать, это не работает:

curl -v http://api.externalserver.com/login

Но это работает:

curl -v -x 11.22.11.22:8585 http://api.externalserver.com/login

Как я могу заставить Apache использовать корпоративный прокси для внешних интернет-запросов?

Я думаю, вы захотите включить mod_proxy_http, и установите:

ProxyRemote * http://11.22.11.22:8585

где-нибудь в вашей конфигурации виртуального хоста.

Вы можете установить прокси-сервер SQUID в прозрачном режиме для проксирования всего трафика, идущего с локального компьютера в Интернет.

Для этого сначала добавьте правило iptables

iptables -t nat -A OUTPUT -p tcp --dport 5555 -j DNAT --to 127.0.0.1:3128

это перенаправит все исходящие HTTP-соединения на локальный squid. Затем настройте squid в соответствии с этим руководство и дополнительно настроить

cache_peer 11.22.11.22 parent 8585 0 no-query default
never_direct allow all

Вот и все. Весь ваш исходящий трафик на порт 80 будет проходить через прокси вашей организации.

Вы пробовали HTTP-туннелирование через прокси-туннель или штопор?

Вам необходимо настроить виртуальный хост для вашего Apache и использовать его в качестве удаленного прокси.

Возможно, адаптация может вам помочь: http://dag.wieers.com/howto/ssh-http-tunneling/

Я думаю, что вы ищете mod_proxy и, в частности, mod_proxy_http:

http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

После установки ProxyRemote и перезапущен httpd, если вы получили сообщение «[error] (13) Permission denied: proxy: HTTP: try to connect to failed», то вам также необходимо выполнить следующее:

setsebool -P httpd_can_network_connect=1