Вопрос: Настройка Apache для использования внешнего прокси для подключения HTTPS


Я пытаюсь заставить мой Apache использовать внешний прокси для HTTPS-запросов:

Listen 80
Listen 443
..
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
..
SSLProxyEngine On
SSLProxyVerify none
SSLCACertificateFile conf/cert/curl-ca-bundle.cert

ProxyRemote http://*.externaldomain.com:80 http://external.proxy.com:8585
ProxyRemote http://*.externaldomain.com:443 https://external.proxy.com:8585
ProxyPass    /sub      https://sub.externaldomain.com/

Но запрос HTTP: // локальный / суб / что-то возвращает 503 и дает:

[Fri Apr 15 17:38:15 2011] [error] (OS 10060)A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.  : proxy: HTTPS: attempt to connect to 11.11.11.111:443 (sub.domain.com) failed

Что странно

curl -x 11.11.11.111:8585 https://sub.externaldomain.com/something

работает.

Как заставить Apache использовать внешний прокси для запроса https?


6
2018-04-15 16:18


Источник


не заметите опечатку в своем вопросе. правило Proxyremote с использованием 443 должно указывать «https» в качестве протокола. я не могу представить, что ваше использование «http» было намеренным. - djangofan


Ответы:


Ошибка, полученная вами из-за последней строки в конфиге

 ProxyPass    /sub      https://sub.externaldomain.com/

Это сообщает apache прокси-прокси-запросы от / sub к sub.externaldomain.com:443, которые вы действительно получаете в своем сообщении об ошибке.

Теперь ваша настройка отсутствует

 ProxyRequests On 

потому что ProxyRemote работает только тогда, когда он включен, а User Agent (браузер) настроен на использование сервера apache в качестве прокси. Я понимаю, что вы хотите сделать что-то вроде:

  • 1 - проксировать весь трафик на / sub через удаленные прокси-серверы, которые вы настроили, - но не использовать локальный сервер Apache в качестве ProxyPass?! - если это так, удалите последнюю строку

  • 2 - вы хотите, чтобы ваш сервер Apache действовал так, что у него есть ресурс / суб локально, и на самом деле запросы идут на удаленный сервер?! - если это так, вам нужно настроить только последнюю строку с присвоенным портом. И использовать эту директиву

ProxyPassReverse /sub https://sub.externaldomain.com/ # here configure the right port as you can see 443 is not working


1
2018-04-15 21:48



Что я хочу сделать, так это переписать локальный / суб / что-то в sub.externaldomain.com/something, но я в корпоративной сети, поэтому я должен использовать external.proxy.com:8585, RewriteRule ^ / sub / (.*) sub.externaldomain.com/$1  [P] ProxyPass / sub sub.externaldomain.com работает отлично, но только для http или вне corpo. сеть. - tomalec
правило перезаписи делает тот же тип прокси-сервера, что и ProxyPass, с той лишь разницей, что вы фактически принимаете решения или имеете определенные критерии. можете ли вы опубликовать окончательный конфиг, который у вас есть? - silviud


Я, наконец, получил его работу :) Проблема была в (RTFM)

«совпадение - это либо имя схемы URL-адреса, которую поддерживает удаленный сервер, либо частичный URL-адрес, для которого должен использоваться удаленный сервер, или * для указания сервера, с которым необходимо связаться для всех запросов. remote-server - это частичный URL-адрес для удаленного сервера. "

Поэтому разрешение прост, используйте ProxyRemoteMatch вместо:

ProxyRemoteMatch externaldomain\.com http://external.proxy.com:8585

0
2018-05-20 16:17