web-dev-qa-db-ja.com

プロキシサーバーが上位サーバーから無効な応答を受信しました

Apacheの背後にTomcatサーバーがあります。私はmod_sslとTomcatへのリバースプロキシを使用しています。すべてがデフォルトのポートで実行されています。

完全なエラーは次のとおりです。 ACKプロキシエラー

プロキシサーバーが上位サーバーから無効な応答を受信しました。プロキシサーバーがリクエストを処理できませんでしたPOST /pages/doeditpage.action。

理由:リモートサーバーからの読み取りエラー

ブラウザのキャッシュを消去すると、エラーはなくなり、数回の試行で再び表示されます。 WindowsプラットフォームのChrome/Firefox/IEでも同じようにテストします。 LinuxベースのChrome/Firefoxで完全に動作するのではないかと思います。

スタックオーバーフローで回答がほとんどないのにググってみましたが、自分の回答が見つかりません。これはサーバー側の問題ですか? Windowsでは、多くのブラウザが同時に間違っていることはないからです。

4
chandank

私自身の質問に答えます。基本的に、TomcatへのApacheコネクタに問題がある場合、このような問題が発生する可能性があります。

私の場合、タイムアウト値を5 MSに減らしていました。これは、インターネットベースのアプリケーションでは本当に少ないと思います。さらに、私は8443でApacheと通信する新しいコネクタを開きました。

プロキシとリバースプロキシに関する限り、デフォルトの非セキュアポート8080を使用せずに、セキュアポートとプロキシポートを443(Apacheセキュアポート)として指定できます。

デフォルトポート8080コネクタのsecure = "true" scheme = "https" proxyPort = 443で問題が解決しました。これはJava/Webのバックグラウンドを持っている人にとっては非常に基本的なことかもしれませんが、Javaアプリケーションサーバーについて何も知らない私のような人にとっては、これを理解するのは本当に大変でした。

3
chandank

Apache設定で次のことを試してください。コメントが含まれているのは、実際にはdebian default configに付属しているからです。また、オプションが使用されている理由も説明します。

    #   SSL Protocol Adjustments:
    #   The safe and default but still SSL/TLS standard compliant shutdown
    #   approach is that mod_ssl sends the close notify alert but doesn't wait for
    #   the close notify alert from client. When you need a different shutdown
    #   approach you can use one of the following variables:
    #   o ssl-unclean-shutdown:
    #     This forces an unclean shutdown when the connection is closed, i.e. no
    #     SSL close notify alert is send or allowed to received.  This violates
    #     the SSL/TLS standard but is needed for some brain-dead browsers. Use
    #     this when you receive I/O errors because of the standard approach where
    #     mod_ssl sends the close notify alert.
    #   o ssl-accurate-shutdown:
    #     This forces an accurate shutdown when the connection is closed, i.e. a
    #     SSL close notify alert is send and mod_ssl waits for the close notify
    #     alert of the client. This is 100% SSL/TLS standard compliant, but in
    #     practice often causes hanging connections with brain-dead browsers. Use
    #     this only for browsers where you know that their SSL implementation
    #     works correctly.
    #   Notice: Most problems of broken clients are also related to the HTTP
    #   keep-alive facility, so you usually additionally want to disable
    #   keep-alive for those clients, too. Use variable "nokeepalive" for this.
    #   Similarly, one has to force some clients to use HTTP/1.0 to workaround
    #   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
    #   "force-response-1.0" for this.
    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-6]" ssl-unclean-shutdown

IEバージョン6までは基本的にキープアライブをオフにし、IEの現在の(および将来の)バージョンまでssl-unclean-shutdownをクリアします。それでも機能しない場合は、次を試してください

    BrowserMatch "MSIE [17-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    # MSIE 7 and newer should be able to use keepalive
    #BrowserMatch "MSIE [17-6]" ssl-unclean-shutdown
1
John Siu