Я пытаюсь заставить свой 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