8

Tomcat 6 サーバーの前に Apache 2.2 サーバーがあります。apache で mod_proxy_ajp を使用して、リクエストを tomcat にプロキシします。かなり標準的なセットアップ。

ブラウザのキープアライブ接続を無効にする必要がある場合、どうすればよいですか?

キープアライブ http リクエストを無効にする必要があるのは、一部のユーザーが非アクティブなキープアライブ接続をドロップし、ランダムに問題を引き起こす可能性があるファイアウォールを持っていると思われるためです。

apache と tomcat の両方に、さまざまな「キープ アライブ」の設定があります。

httpd.conf には「KeepAlive Off」があります(私の場合、違いはないようです)

また、ProxyPass を設定する httpd.conf では、パラメータ「キープアライブ」を使用できますが、これは、Apache と Tomcat の間にプロキシ/ファイアウォールがある場合にのみ役立つはずです。これは、私の場合には存在せず、問題ではありません。 .

Tomcat 自体、http コネクタには「keepAliveTimeout」と「maxKeepAliveRequests」がありますが、これは http コネクタ専用です。

tomcat ajp コネクタにも「keepAliveTimeout」がありますが、これは apache からの ajp リクエスト用であり、ブラウザから apache への実際の HTTP リクエストにフローするかどうかは不明です。

さらに、HTTP1.0 と HTTP1.1 の違いもあります。

混乱します....誰か説明してもらえますか?

4

1 に答える 1

14

(少なくとも) 4 つの「キープアライブ」があります。

  1. クライアント ブラウザと Apache 間の HTTP レイヤ キープアライブ。(HTTP/TCP 接続で複数のクライアント要求を有効にします。「KeepAlive」ディレクティブを構成します。)

  2. クライアント ブラウザと Apache 間の TCP レイヤ キープアライブ。(ファイアウォールによって接続が閉じられるのを避けるために、空のパケットを定期的に送信します (Linux ではデフォルトで約 2 時間)。Apache での設定方法がわかりません。)

  3. Apache と Tomcat の間の AJP 層のキープアライブ。(AJP/TCP 接続で複数の Apache リクエストを有効にします。設定する「ProxyPass」の「max」および「smax」オプション。)

  4. Apache と Tomcat 間の TCP 層キープアライブ。(2 と同じですが、Apache と Tomcat の間のファイアウォール用です。構成する「ProxyPass」ディレクティブの「keepalive」オプション。)

したがって、構成 (「キープアライブ オフ」) は、クライアントおよび Apache 内のファイアウォールに対して正しく機能する可能性があります。キープアライブ (上記のタイプ 1) が無効になっているかどうかを確認するには、「LogFormat」ディレクティブに「%X」を使用します。

ちなみに、「KeepAliveTimeout」がそれほど大きくない場合、ファイアウォールによる接続閉鎖は大きな問題にはならないと思います。問題がない場合 (警告メッセージ以外)、私の意見では、そのままにしておくことができます。

于 2009-11-24T04:14:27.290 に答える