ディレクティブ JkOptions を使用すると、多くの転送オプションを設定できます。これにより、次のオプションが有効(+)または無効(-)になります。 先頭に記号がない場合、オプションは有効になります。
次の4つのオプション +ForwardURIxxx は相互に排他的です。 それらのうち正確に1つが必要です。負の記号プレフィックスは許可されていません。 バージョン 1.2.24 以降のデフォルト値は "ForwardURIProxy" です。 バージョン 1.2.23 では "ForwardURICompatUnparsed"、バージョン 1.2.22 までは "ForwardURICompat" でした。 他の2つのオプションのいずれかをオンにすると、デフォルトをオフにできます。 変更する正当な理由がない限り、デフォルト値のままにしておく必要があります。
すべてのオプションは、グローバルサーバーから仮想ホストに継承されます。 有効化(プラスオプション)と無効化(マイナスオプション)をサポートするオプションは、次の方法で継承されます。
options(vhost) = plus_options(global) - minus_options(global) + plus_options(vhost) - minus_options(vhost)
JkOptions ForwardURIProxy を使用すると、転送された URI は、Apache 内で処理された後、Tomcat に転送される前に部分的に再エンコードされます。 これは、mod_rewrite によるローカル URL 操作および URL エンコードされたセッションIDと互換性があります。
JkOptions +ForwardURIProxy
JkOptions ForwardURICompatUnparsed を使用すると、転送された URI は解析されません。 仕様に準拠しており、安全です。 常に元のリクエスト URI を転送するため、mod_rewrite で URI を書き換えてから書き換えられた URI を転送することはできません。
JkOptions +ForwardURICompatUnparsed
JkOptions の ForwardURICompat を使用すると、転送された URI は Apache によってデコードされます。エンコードされた文字はデコードされ、".." などの明示的なパスコンポーネントは既に解決されます。これは仕様への準拠度が低く、プレフィックス JkMount を使用している場合は安全ではありません。このオプションを使用すると、転送前に mod_rewrite で URI を書き換えることができます。
JkOptions +ForwardURICompat
JkOptions の ForwardURIEscaped を使用すると、転送された URI は ForwardURICompat で使用される URI のエンコードされた形式になります。 ".." などの明示的なパスコンポーネントは既に解決されます。 これは URL エンコードされたセッション ID との組み合わせでは機能しませんが、転送前に mod_rewrite で URI を書き換えることができます。
JkOptions +ForwardURIEscaped
JkOptions の RejectUnsafeURI は、デコード後にパーセント記号 '%' またはバックスラッシュ '\' を含むすべての URL をブロックします。
ほとんどの Web アプリケーションは、そのような URL を使用しません。 RejectUnsafeURI オプションを使用すると、いくつかの既知の URL エンコーディング攻撃をブロックできます。 デフォルトでは、このオプションは設定されていません。
mod_rewrite を使用して同様のチェックを実現することもできます。これはより強力ですが、少し複雑です。
JkOptions +RejectUnsafeURI
JkOptions の CollapseSlashesAll は 1.2.44 以降では非推奨となり、使用しても無視されます。
JkOptions の CollapseSlashesUnmount は 1.2.44 以降では非推奨となり、使用しても無視されます。
JkOptions の CollapseSlashesNone は 1.2.44 以降では非推奨となり、使用しても無視されます。
JkOptions の ForwardDirectories は、Apache の DirectoryIndex ディレクティブと組み合わせて使用されます。 そのため、mod_dir は Apache で静的または動的 (DSO) に使用できる必要があります。
DirectoryIndex が構成されている場合、Apache はディレクティブで指定されたローカル URL ごとにサブ リクエストを作成し、一致するローカル ファイルがあるかどうかを判断します (これはファイルを stat することによって行われます)。
ForwardDirectories が false (デフォルト) に設定されており、Apache が一致するファイルを見つけられない場合、Apache はディレクトリのコンテンツを提供します (ディレクティブ Options がそのディレクトリの Indexes を指定している場合)、または 403 Forbidden
レスポンスを提供します (ディレクティブ Options がそのディレクトリの Indexes を指定していない場合)。
ForwardDirectories が true に設定されており、Apache が一致するファイルを見つけられない場合、リクエストは解決のために Tomcat に転送されます。 これは、Apache がさまざまな理由でファイル システム上のインデックス ファイルを表示できない場合に使用されます。Tomcat が別のマシンで実行されている、JSP ファイルがプリコンパイルされているなどです。
ローカルで表示可能なファイルは、Tomcat でのみ表示可能なファイルよりも優先されることに注意してください (つまり、Apache がファイルを表示できる場合、それが提供されるファイルになります)。 これは、Tomcat が通常提供するファイルの種類が複数ある場合 (たとえば、Velocity ページと JSP ページ) に重要です。
JkOptions +ForwardDirectories
JkOptions の ForwardLocalAddress を設定すると、mod_jk にリモート クライアント アドレスの代わりに Apache HTTP サーバーのローカル アドレスを送信するように指示します。 これは、Tomcat リモート アドレス バルブで、構成された Apache サーバーからの接続のみを許可するために使用できます。
JkOptions +ForwardLocalAddress
JkOptions の ForwardPhysicalAddress を設定すると、mod_jk に物理ピア TCP IP アドレスをクライアント アドレスとして送信するように指示します。 デフォルトでは、mod_jk は Web サーバーから提供される論理アドレスを使用します。 たとえば、mod_remoteip モジュールは、X-Forwarded-For
ヘッダーでプロキシによって転送されたクライアント IP に論理 IP アドレスを設定します。
JkOptions +ForwardPhysicalAddress
JkOptions の FlushPackets を設定すると、Tomcat から受信した各 AJP パケット チャンクの後に Apache の接続バッファーをフラッシュするように mod_jk に指示します。 このオプションは、Apache と Tomcat に強いパフォーマンスのペナルティを与える可能性があります。これは、通常必要とされるよりも頻繁に書き込みが実行されるためです (つまり、各レスポンスの終わりに)。
JkOptions の FlushHeader を設定すると、Tomcat からレスポンス ヘッダーを受信した後、Apache の接続バッファーをフラッシュするように mod_jk に指示します。
JkOptions の DisableReuse を設定すると、接続が使用された直後に接続を閉じるように mod_jk に指示します。 通常、mod_jk は永続的な接続を使用し、アイドル状態の接続をプールして再利用します。新しいリクエストを Tomcat に送信する必要がある場合。
このオプションを使用すると、Apache と Tomcat に強いパフォーマンスのペナルティが発生します。 修正できないネットワークの問題が発生した場合にのみ、最後の手段としてこれを使用してください。 Apache と Tomcat の間のファイアウォールがアイドル状態の接続をサイレントに強制終了する場合は、ワーカー属性 socket_keepalive を OS の適切な TCP keepalive 値と組み合わせて使用してみてください。
JkOptions の ForwardKeySize を設定すると、ajp13 を使用している場合、Servlet API 2.3 で必要とされる SSL キー サイズも転送するように mod_jk に指示します。 このフラグは、サーブレット エンジンが Tomcat 3.2.x の場合は設定しないでください (デフォルトではオフ)。
JkOptions +ForwardKeySize
JkOptions の ForwardSSLCertChain を設定すると、ajp13 を使用している場合、SSL 証明書チェーンを転送するように mod_jk に指示します (デフォルトではオフ)。 Mod_jk は SSL_CLIENT_CERT
のみを AJP コネクターに渡します。 これは、自己署名証明書またはルート CA 証明書によって直接署名された証明書では問題ありません。 ただし、中間 CA 証明書によって署名された証明書が多数あり、これは重大な問題です。サーブレットはクライアント証明書を独自に検証することができません。 このバグは、SSL_CLIENT_CERT_CHAIN
を AJP コネクターを介して Tomcat に渡すことで修正されます。
このディレクティブはバージョン 1.2.22 以降にのみ存在します。
JkOptions +ForwardSSLCertChain
ディレクティブ JkEnvVar を使用すると、Apache サーバーから Tomcat エンジンに環境変数を転送できます。 ディレクティブの 2 番目のパラメーターとしてデフォルト値を追加できます。 デフォルト値が明示的に指定されていない場合、変数は実行時に設定されている場合にのみ送信されます。
変数は、request.getAttribute(attributeName) を介して Tomcat 側でリクエスト属性として取得できます。 JkEnvVar を介して送信された変数は、request.getAttributeNames() にリストされないことに注意してください。
変数は、グローバル サーバーから仮想ホストに継承されます。
JkEnvVar SSL_CLIENT_V_START undefined