O Apache como proxy gera falha.

4

Estamos usando o proxy do apache para permitir que nossos servidores de aplicativos acessem sites da Web específicos pela Internet. A configuração é a seguinte:

application servers --> apache proxy --> Internet website 

Algumas das solicitações falham com o erro abaixo no log do servidor de aplicativos:

<head>
<title>502 Proxy Error</title>
</head><body>
<h1>Proxy Error</h1>
<p>The proxy server received an invalid
response from an upstream server.<br />
The proxy server could not handle the request <em><a href="/link">POST
nbsp;/link</a></em>.<p>
Reason: <strong>Error reading from remote server</strong></p></p>
</body>

e o log de depuração abaixo no arquivo apache error.log:

[Mon May 20 09:57:54 2013] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //myURL.com
[Mon May 20 09:57:54 2013] [debug] proxy_util.c(1506): [client 172.20.101.71] proxy: https: found worker 'https://myurl.com/' for 'https://myurl.com/link'
[Mon May 20 09:57:54 2013] [debug] mod_proxy.c(1015): Running scheme https handler (attempt 0)
[Mon May 20 09:57:54 2013] [debug] mod_proxy_http.c(1973): proxy: HTTP: serving URL https://myurl.com/link
[Mon May 20 09:57:54 2013] [debug] proxy_util.c(2011): proxy: HTTPS: has acquired connection for (mu=y url)
[Mon May 20 09:57:54 2013] [debug] ssl_engine_io.c(1908): OpenSSL: I/O error, 5 bytes expected to read on BIO#136e90 [mem: 190593]
[Mon May 20 09:57:54 2013] [debug] proxy_util.c(2067): proxy: connecting https://myurl.com/link to myurl.com:443
[Mon May 20 09:57:54 2013] [debug] proxy_util.c(2193): proxy: connected /link to myurl.com:443
[Mon May 20 09:57:54 2013] [debug] ssl_engine_io.c(1908): OpenSSL: I/O error, 5 bytes expected to read on BIO#136e90 [mem: 190593]
[Mon May 20 09:57:54 2013] [info] [client ip] (131)Connection reset by peer: SSL input filter read failed.
[Mon May 20 09:57:54 2013] [error] [client ip2] (131)Connection reset by peer: proxy: error reading status line from remote server myurl.com:443
[Mon May 20 09:57:54 2013] [debug] mod_proxy_http.c(1466): [client ip2] proxy: NOT Closing connection to client although reading from backend server "myurl.com:443 failed.
[Mon May 20 09:57:54 2013] [error] [client ip2] proxy: Error reading from remote server returned by /link
[Mon May 20 09:57:54 2013] [debug] proxy_util.c(2029): proxy: HTTPS: has released connection for (myurl.com)

Qualquer ideia de como posso resolver esse problema, sabendo que a maioria das solicitações está sendo enviada com sucesso e a resposta está sendo recebida normalmente. Todas as solicitações são do mesmo tamanho e geradas automaticamente, portanto, o problema não poderia estar na própria solicitação.

    
por Hytham 20.05.2013 / 13:53

2 respostas

5

Parece que há alguns problemas descritos neste Apache Bugzilla . A solução estava adicionando essa linha em httpd.conf dentro de <Proxy> seção

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

Atualizar

Após implantar a solução acima, enfrentei outro problema, pois o cliente estava enviando a requisição usando HTTP / 1.1 e o proxy foi forçado a usar HTTP / 1.0 conforme os parâmetros setEnv anteriores, isso causou erro HTTP HTTP / 1.1 417 Expectativa Falhou . Este tópico no SO menciona que o erro pode ser resolvido do lado do cliente ou do lado do proxy.

No final, implementei a solução no lado do proxy com base em esta página . Agora eu tenho três parâmetros dentro de <Proxy> Seção

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
RequestHeader unset Expect early

Eu tenho monitorado a solução desde ontem e está funcionando perfeitamente até agora. Também realizei um teste ontem com 500 transações e elas foram todas bem sucedidas.

Atualização 2

Foi adicionado aos documentos do Apache desde então.

    
por 23.05.2017 / 14:41
0

Verifique se você tem os dois SSLProxyVerify none e SSLProxyCheckPeerCN off em seu host virtual de proxy SSL.

    
por 24.05.2013 / 02:52