Configure o Apache para usar proxy externo para conexão HTTPS

6

Estou tentando fazer com que meu Apache use um proxy externo para solicitações 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/

Mas a solicitação do link retorna 503 e fornece:

[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

O que é estranho

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

funciona.

Como posso fazer o Apache usar proxy externo para solicitação https?

    
por tomalec 15.04.2011 / 18:18

2 respostas

0

Eu finalmente consegui trabalhar :) O problema foi com (RTFM)

"match is either the name of a URL-scheme that the remote server supports, or a partial URL for which the remote server should be used, or * to indicate the server should be contacted for all requests. remote-server is a partial URL for the remote server. "

Portanto, a resolução é simples, use ProxyRemoteMatch :

ProxyRemoteMatch externaldomain\.com http://external.proxy.com:8585
    
por 20.05.2012 / 18:17
1

O erro que você recebe é por causa da sua última linha na configuração

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

Isso informa ao apache sobre as solicitações de passagem de proxy de / sub para sub.externaldomain.com:443, que é o que você realmente recebe em sua mensagem de erro.

Agora sua configuração está faltando

 ProxyRequests On 

porque o ProxyRemote só funciona quando está ativado e o User Agent (navegador) está configurado para usar o servidor apache como proxy. Eu entendo que você quer fazer algo como:

  • 1 - proxy todo o tráfego para / subcontratar os proxies remotos que você configurou - mas não para usar o servidor apache local como um ProxyPass ?! - se for esse o caso, remova a última linha

  • 2 - você quer que seu servidor apache atue que ele tem o recurso / sub localmente e, na verdade, os pedidos estão indo para um servidor remoto ?! - se for esse o caso, você precisa configurar apenas a última linha com a porta apropriada E usar esta diretiva também

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

    
por 15.04.2011 / 23:48