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

Настройте 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: // localhost / sub / что-то возвращает 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?

Наконец-то все заработало :) Проблема была с (RTFM)

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

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

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

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

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

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

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

 ProxyRequests On 

потому что ProxyRemote работает только тогда, когда он включен, а пользовательский агент (браузер) настроен на использование сервера 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