付録A 参考資料
A.1. 提供される Undertow ハンドラー
ハンドラーの完全リストは、お使いの JBoss EAP インストールの Undertow コアと一致するバージョンの Undertow コアのソース JAR ファイルを確認してください。Undertow コアのソース JAR ファイルは JBoss EAP Maven リポジトリー からダウンロードでき、利用できるハンドラーは /io/undertow/server/handlers/ ディレクトリーで参照できます。
現在の JBoss EAP インストールで使用されている Undertow コアのバージョンを確認するには、JBoss EAP サーバーの起動中に出力される、以下と似た INFO メッセージを server.log ファイルで検索します。
INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0003: Undertow 1.4.18.Final-redhat-1 starting
AccessControlListHandler
クラス名: io.undertow.server.handlers.AccessControlListHandler
名前: access-control
リモートピアの属性に基づいて要求を受諾または拒否できるハンドラー。
表A.1 パラメーター
| 名前 | 説明 |
|---|---|
| acl | ACL ルール。このパラメーターは必須です。 |
| attribute | Exchange 属性文字列。このパラメーターは必須です。 |
| default-allow |
ハンドラーがデフォルトで要求を受諾または拒否するかどうかを指定するブール値。デフォルトは |
AccessLogHandler
クラス名: io.undertow.server.handlers.accesslog.AccessLogHandler
名前: access-log
アクセスログハンドラー。このハンドラーは、提供された書式文字列に基づいてアクセスログメッセージを生成し、提供された AccessLogReceiver にそれらのメッセージを渡します。
このハンドラーは、ExchangeAttribute メカニズムにより提供されたすべての属性をログに記録できます。
このファクトリーは、以下のパターンのトークンハンドラーを生成します。
表A.2 パターン
| パターン | 説明 |
|---|---|
| %A | リモート IP アドレス |
| %A | ローカル IP アドレス |
| %b |
送信済みバイト数 (HTTP ヘッダーまたは |
| %B | 送信済みバイト数 (HTTP ヘッダーを除く) |
| %h | リモートホスト名 |
| %H | 要求プロトコル |
| %l |
|
| %m | 要求メソッド |
| %p | ローカルポート |
| %q |
クエリー文字列 ( |
| %r | 要求の最初の行 |
| %s | 応答の HTTP ステータスコード |
| %t | Common Log Format 形式の日時 |
| %u | 認証されたリモートユーザー |
| %U | 要求された URL パス |
| %v | ローカルサーバー名 |
| %D | 要求を処理するのにかかった時間 (ミリ秒単位) |
| %T | 要求を処理するのにかかった時間 (秒単位) |
| %I | 現在の要求スレッド名 (後でスタックトレースと比較できます) |
| common |
|
| combined |
|
クッキー、受信ヘッダー、またはセッションから情報を書き込むこともできます。
Apache 構文に基づきます。
-
%{i,xxx}(受信ヘッダーの場合) -
%{o,xxx}(送信応答ヘッダーの場合) -
%{c,xxx}(特定のクッキーの場合) -
%{r,xxx}(xxxはServletRequestの属性) -
%{s,xxx}(xxxはHttpSessionの属性)
表A.3 パラメーター
| 名前 | 説明 |
|---|---|
| format | ログメッセージを生成するために使用する形式。これは デフォルトパラメーター です。 |
AllowedMethodsHandler
特定の HTTP メソッドのホワイトリストに登録するハンドラー。許可されたメソッドセットの 1 つを持つリクエストのみが許可されます。
クラス名: io.undertow.server.handlers.AllowedMethodsHandler
名前: allowed-methods
表A.4 パラメーター
| 名前 | 説明 |
|---|---|
| methods |
許可されるメソッド ( |
BlockingHandler
ブロック要求を開始する HttpHandler。スレッドが現在 I/O スレッドで実行されている場合、スレッドはディスパッチされます。
クラス名: io.undertow.server.handlers.BlockingHandler
名前: blocking
このハンドラーにはパラメーターがありません。
ByteRangeHandler
範囲要求のハンドラー。これは、修正されたコンテンツの長さのリソース (たとえば、content-length ヘッダーが設定されたリソース) に対する範囲要求を処理できる汎用ハンドラーです。コンテンツすべてが生成され、破棄されるため、これは必ずしも範囲要求を処理する最も効率的な方法ではありません。現時点では、このハンドラーは単純な単一の範囲要求しか処理できません。複数の範囲が要求された場合は、Range ヘッダーが無視されます。
クラス名: io.undertow.server.handlers.ByteRangeHandler
名前: byte-range
表A.5 パラメーター
| 名前 | 説明 |
|---|---|
| send-accept-ranges | 承認範囲を送信するかどうかを決定するブール値。これは デフォルトパラメーター です。 |
CanonicalPathHandler
このハンドラーは、相対パスを正規のパスに変換します。
クラス名: io.undertow.server.handlers.CanonicalPathHandler
名前: canonical-path
このハンドラーにはパラメーターがありません。
DisableCacheHandler
ブラウザーおよびプロキシーによる応答キャッシュを無効にするハンドラー。
クラス名: io.undertow.server.handlers.DisableCacheHandler
名前: disable-cache
このハンドラーにはパラメーターがありません。
DisallowedMethodsHandler
特定の HTTP メソッドをブラックリストに登録するハンドラー。
クラス名: io.undertow.server.handlers.DisallowedMethodsHandler
名前: disallowed-methods
表A.6 パラメーター
| 名前 | 説明 |
|---|---|
| methods |
許可しないメソッド (たとえば、 |
EncodingHandler
このハンドラーは、コンテンツのエンコーディング実装の基礎となります。このハンドラーに委譲するものとして、エンコーディングハンドラーが、指定されたサーバー側の優先度で追加されます。
正しいハンドラーを決定するために q 値が使用されます。q 値なしで要求が行われた場合、サーバーは使用するエンコーディングとして最も優先度が高いハンドラーを選択します。
一致するハンドラーがない場合は、ID エンコーディングが選択されます。q 値が 0 であるため、ID エンコーディングが特別に許可されない場合は、ハンドラーにより応答コード 406 (Not Acceptable) が設定され、返されます。
クラス名: io.undertow.server.handlers.encoding.EncodingHandler
名前: compress
このハンドラーにはパラメーターがありません。
FileErrorPageHandler
エラーページとして使用するファイルをディスクから提供するハンドラー。このハンドラーはデフォルトで応答コードを提供しません。応答コードは設定する必要があります。
クラス名: io.undertow.server.handlers.error.FileErrorPageHandler
名前: error-file
表A.7 パラメーター
| 名前 | 説明 |
|---|---|
| file | エラーページとして使用するファイルの場所。 |
| response-codes | 定義されたエラーページファイルにリダイレクトする応答コードのリスト。 |
HttpTraceHandler
HTTP トレース要求を処理するハンドラー。
クラス名: io.undertow.server.handlers.HttpTraceHandler
名前: trace
このハンドラーにはパラメーターがありません。
IPAddressAccessControlHandler
リモートピアの IP アドレスに基づいて要求を受諾または拒否できるハンドラー。
クラス名: io.undertow.server.handlers.IPAddressAccessControlHandler
名前: ip-access-control
表A.8 パラメーター
| 名前 | 説明 |
|---|---|
| acl | アクセス制御リストを表す文字列。これは デフォルトパラメーター です。 |
| failure-status | 拒否された要求で返されるステータスコードを表す文字列。 |
| default-allow | デフォルトで許可するかしないかを表すブール値。 |
JDBCLogHandler
クラス名: io.undertow.server.handlers.JDBCLogHandler
名前: jdbc-access-log
表A.9 パラメーター
| 名前 | 説明 |
|---|---|
| format |
JDBC ログパターンを指定します。デフォルト値は |
| datasource | ログするデータソースの名前。このパラメーターは必須であり、デフォルトパラメーター です。 |
| tableName | テーブル名。 |
| remoteHostField | リモートホストアドレス。 |
| userField | ユーザー名。 |
| timestampField | タイムスタンプ。 |
| virtualHostField | VirtualHost。 |
| methodField | メソッド。 |
| queryField | クエリー。 |
| statusField | ステータス。 |
| bytesField | バイト数。 |
| refererField | 参照元。 |
| userAgentField | UserAgent。 |
LearningPushHandler
ブラウザーが要求するリソースのキャッシュを構築し、サーバープッシュを使用してリソースをプッシュ (サポートされている場合) するハンドラー。
クラス名: io.undertow.server.handlers.LearningPushHandler
名前: learning-push
表A.10 パラメーター
| 名前 | 説明 |
|---|---|
| max-age | キャッシュエントリーの最大期間を表す整数。 |
| max-entries | キャッシュエントリーの最大数を表す整数。 |
LocalNameResolvingHandler
DNS ルックアップを実行してローカルアドレスを解決するハンドラー。フロントエンドサーバーが X-forwarded-host ヘッダーを送信した場合、または AJP が使用中の場合は、未解決のローカルアドレスが作成されることがあります。
クラス名: io.undertow.server.handlers.LocalNameResolvingHandler
名前: resolve-local-name
このハンドラーにはパラメーターがありません。
PathSeparatorHandler
URL のスラッシュでない区切り文字をスラッシュに変換するハンドラー。一般的に、Windows システムではバックスラッシュはスラッシュに変換されます。
クラス名: io.undertow.server.handlers.PathSeparatorHandler
名前: path-separator
このハンドラーにはパラメーターがありません。
PeerNameResolvingHandler
リバース DNS ルックアップを実行してピアアドレスを解決するハンドラー。
クラス名: io.undertow.server.handlers.PeerNameResolvingHandler
名前: resolve-peer-name
このハンドラーにはパラメーターがありません。
ProxyPeerAddressHandler
X-Forwarded-For ヘッダーの値にピアアドレスを設定するハンドラー。これは、このヘッダーを常に設定するプロキシーの背後でのみ使用してください。 そのように使用しないと、攻撃者がピアアドレスを偽造することがあります。
クラス名: io.undertow.server.handlers.ProxyPeerAddressHandler
名前: proxy-peer-address
このハンドラーにはパラメーターがありません。
RedirectHandler
302 リダイレクトを使用して、指定された場所にリダイレクトするリダイレクトハンドラー。場所は exchange 属性文字列として指定されます。
クラス名 io.undertow.server.handlers.RedirectHandler
名前: redirect
表A.11 パラメーター
| 名前 | 説明 |
|---|---|
| value | リダイレクトの宛先。これは デフォルトパラメーター です。 |
RequestBufferingHandler
すべての要求データをバッファーするハンドラー。
クラス名: io.undertow.server.handlers.RequestBufferingHandler
名前: buffer-request
表A.12 パラメーター
| 名前 | 説明 |
|---|---|
| buffers | バッファーの最大数を定義する整数。これは デフォルトパラメーター です。 |
RequestDumpingHandler
exchange をログにダンプするハンドラー。
クラス名: io.undertow.server.handlers.RequestDumpingHandler
名前: dump-request
このハンドラーにはパラメーターがありません。
RequestLimitingHandler
同時リクエストの最大数を制限するハンドラー。この制限を超えたリクエストは、前のリクエストが完了するまでブロックされます。
クラス名: io.undertow.server.handlers.RequestLimitingHandler
名前: request-limit
表A.13 パラメーター
| 名前 | 説明 |
|---|---|
| requests | 同時リクエストの最大数を表す整数。これは デフォルトパラメーター であり、必須です。 |
ResourceHandler
リソースを提供するハンドラー。
クラス名: io.undertow.server.handlers.resource.ResourceHandler
名前: resource
表A.14 パラメーター
| 名前 | 説明 |
|---|---|
| location | リソースの場所。これは デフォルトパラメーター であり、必須です。 |
| allow-listing | ディレクトリーのリストを許可するかどうかを決定するブール値。 |
ResponseRateLimitingHandler
設定された数のバイト/時間にダウンロードレートを制限するハンドラー。
クラス名: io.undertow.server.handlers.ResponseRateLimitingHandler
名前: response-rate-limit
表A.15 パラメーター
| 名前 | 説明 |
|---|---|
| bytes | ダウンロードレートを制限するバイトの数。このパラメーターは必須です。 |
| time | ダウンロードレートを制限する時間 (秒単位)。このパラメーターは必須です。 |
SetHeaderHandler
修正された応答ヘッダーを設定するハンドラー。
クラス名: io.undertow.server.handlers.SetHeaderHandler
名前: header
表A.16 パラメーター
| 名前 | 説明 |
|---|---|
| header | ヘッダー属性の名前。このパラメーターは必須です。 |
| value | ヘッダー属性の値。このパラメーターは必須です。 |
SSLHeaderHandler
以下のヘッダーに基づいて接続の SSL 情報を設定するハンドラー。
- SSL_CLIENT_CERT
- SSL_CIPHER
- SSL_SESSION_ID
このハンドラーがチェーンに存在する場合は、これらのヘッダーが存在しなくても SSL セッション情報が常に上書きされます。
このハンドラーは、リクエストごとに常にヘッダーを指定するよう設定されている、あるいは SSL 情報が存在しない場合に、これらの名前を持つ既存のヘッダーを削除するように設定されている、リバースプロキシーの背後にあるサーバー上でのみ使用する必要があります。このように使用しないと、悪意のあるクライアントが SSL 接続を偽装できる可能性があります。
クラス名: io.undertow.server.handlers.SSLHeaderHandler
名前: ssl-headers
このハンドラーにはパラメーターがありません。
StuckThreadDetectionHandler
このハンドラーは処理に時間がかかるリクエストを検出します (処理中のスレッドが停止していることを示すことがあります)。
クラス名: io.undertow.server.handlers.StuckThreadDetectionHandler
名前: stuck-thread-detector
表A.17 パラメーター
| 名前 | 説明 |
|---|---|
| threshhold |
リクエストを処理する時間のしきい値を決定する整数値 (秒単位)。デフォルト値は |
URLDecodingHandler
指定された文字セットに URL およびクエリーパラメーターをデコードするハンドラー。このハンドラーを使用している場合は、UndertowOptions.DECODE_URL パラメーターを false に設定する必要があります。
これはパーサーの組み込み UTF-8 デコーダーを使用する場合よりも効率的ではありません。UTF-8 以外の文字セットにデコードする必要がない限り、パーサーのデコードを使用してください。
クラス名: io.undertow.server.handlers.URLDecodingHandler
名前: url-decoding
表A.18 パラメーター
| 名前 | 説明 |
|---|---|
| charset | デコードする文字セット。これは デフォルトパラメーター であり、必須です。 |