web-dev-qa-db-ja.com

プロキシとしてのApacheが失敗を生成します。

Apacheプロキシを使用して、アプリケーションサーバーがインターネット経由で特定のWebサイトにアクセスできるようにしています。セットアップは次のとおりです。

application servers --> Apache proxy --> Internet website 

一部のリクエストは、アプリケーションサーバーログで以下のエラーで失敗します。

<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>

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)

リクエストの大部分が正常に送信され、応答が正常に受信されていることを知っている私がこの問題をどのように解決できるかについてのアイデア。すべてのリクエストは同じ長さであり、自動的に生成されるため、リクエスト自体に問題があるわけではありません。

4
Hytham

Apache Bugzilla で説明されている問題があるようです。 solutionhttpd.confセクション内の<Proxy>にこれらの行を追加していました

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

更新

上記のソリューションを展開した後、クライアントがHTTP/1.1を使用して要求を送信し、プロキシが以前のsetEnvパラメータに従ってHTTP/1.0を使用するように強制されると、別の問題に直面し、これによりHTTPエラーが発生しました HTTP/1.1 417 Expectation FailedSO上のこのスレッド エラーはクライアント側またはプロキシ側から解決できる可能性があることを述べます。

最後に、私は このページ に基づいてプロキシ側でソリューションを実装しました。 <Proxy>セクション内に3つのパラメータがあります

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

私は昨日からソリューションを監視しており、現在まで完璧に機能しています。また、私は昨日500のトランザクションでテストを実行しましたが、すべて成功しました。

アップデート2

それはApache docsに追加されました それ以来。

5
masegaloeh

両方あるかどうかを確認してくださいSSLProxyVerify noneおよびSSLProxyCheckPeerCN off SSLプロキシ仮想ホスト上。

0
Marcel