web-dev-qa-db-ja.com

プロキシサーバーがアップストリームサーバーから無効な応答を受信しました

Tomcatにデプロイされたアプリケーションがあります。アプリケーションにアクセスするために、Tomcatにリクエストを送信するApacheを使用しています。ブラウザがランダムに次の応答を返します。

Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /sampleapp/<http://samplehost.com:8080/sampleapp/>.
Reason: Error reading from remote server
________________________________
Apache/2.2.21 (Unix) Server at samplehost.com Port 8080

このエラーは常に発生するわけではなく、これまでのところ、IEのみのクライアントマシンでこれを取得しています。Firefoxを使用している同じクライアントマシンでは正常に動作します。

以下は、失敗したリクエストのApacheログからのエラートレースです

[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] (20014)Internal error: proxy: error reading status line from remote server localhost:8081, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm
[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] proxy: Error reading from remote server returned by /sampleapp/opp/searchResult.htm, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm

要求が失敗した場合、Tomcatログには何も出力されません。

Apacheのインストール済みバージョンに関連する情報は次のとおりです

-bash-3.00$ ./httpd -v
Server version: Apache/2.2.21 (Unix)
Server built:   Sep 21 2011 20:00:58

ロードされたモジュールを見つけようとすると、次のエラーが発生します

-bash-3.00$ /usr/local/Apache2/bin/apachectl -t -D DUMP_MODULES
httpd: Syntax error on line 64 of /usr/local/Apache2/conf/httpd.conf: Cannot load /usr/local/Apache2/modules/mod_authnz_ldap.so into server: ld.so.1: httpd: fatal: libldap-2.4.so.2: open failed: No such file or directory
25
ckb

これはあなたの投稿には記載されていませんが、VirtualHostsが設定されているApacheへのブラウザからSSL接続を開始していると思われ、ApacheはTomcatへの修正プロキシを行います。

IE)の深刻なバグがあります。これは、SSL接続で「間違った」ホスト情報を送信し(下記のEDITを参照)、Apache VirtualHostsを混乱させます。提示されるのは、URLのDNS解決ではなく、IPの逆DNS解決の1つです。

回避策は、SSL仮想ホスト/サーバー名ごとに1つのIPアドレスを持つことです。短いです、あなたは次のようなもので終わる必要があります

1サーバー名== 1 IPアドレス== 1証明書== 1 Apache仮想ホスト

[〜#〜] edit [〜#〜]

結論は正しいものの、問題の特定についてはこちらで詳しく説明しています http://en.wikipedia.org/wiki/Server_Name_Indication

9
Bruno Grieder