付録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

ハンドラーがデフォルトで要求を受諾または拒否するかどうかを指定するブール値。デフォルトは false です。

AccessLogHandler

クラス名: io.undertow.server.handlers.accesslog.AccessLogHandler

名前: access-log

アクセスログハンドラー。このハンドラーは、提供された書式文字列に基づいてアクセスログメッセージを生成し、提供された AccessLogReceiver にそれらのメッセージを渡します。

このハンドラーは、ExchangeAttribute メカニズムにより提供されたすべての属性をログに記録できます。

このファクトリーは、以下のパターンのトークンハンドラーを生成します。

表A.2 パターン

パターン説明

%A

リモート IP アドレス

%A

ローカル IP アドレス

%b

送信済みバイト数 (HTTP ヘッダーまたは - を除く (バイトが送信されなかった場合))

%B

送信済みバイト数 (HTTP ヘッダーを除く)

%h

リモートホスト名

%H

要求プロトコル

%l

identd からのリモート論理ユーザー名 (常に - を返します)

%m

要求メソッド

%p

ローカルポート

%q

クエリー文字列 (? 文字を除く)

%r

要求の最初の行

%s

応答の HTTP ステータスコード

%t

Common Log Format 形式の日時

%u

認証されたリモートユーザー

%U

要求された URL パス

%v

ローカルサーバー名

%D

要求を処理するのにかかった時間 (ミリ秒単位)

%T

要求を処理するのにかかった時間 (秒単位)

%I

現在の要求スレッド名 (後でスタックトレースと比較できます)

common

%h %l %u %t "%r" %s %b

combined

%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}"

クッキー、受信ヘッダー、またはセッションから情報を書き込むこともできます。

Apache 構文に基づきます。

  • %{i,xxx} (受信ヘッダーの場合)
  • %{o,xxx} (送信応答ヘッダーの場合)
  • %{c,xxx} (特定のクッキーの場合)
  • %{r,xxx} (xxxServletRequest の属性)
  • %{s,xxx} (xxxHttpSession の属性)

表A.3 パラメーター

名前説明

format

ログメッセージを生成するために使用する形式。これはデフォルトパラメーターです。

AllowedMethodsHandler

特定の HTTP メソッドのホワイトリストに登録するハンドラー。許可されたメソッドセットの 1 つを持つリクエストのみが許可されます。

クラス名: io.undertow.server.handlers.AllowedMethodsHandler

名前: allowed-methods

表A.4 パラメーター

名前説明

methods

許可されるメソッド (GETPOSTPUT など)。これはデフォルトパラメーターです。

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

許可しないメソッド (たとえば、GETPOSTPUT など)。これはデフォルトパラメーターです。

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 ログパターンを指定します。デフォルト値は common です。また、combined を使用して、VirtualHost、要求メソッド、参照元、およびユーザーエージェント情報をログメッセージに追加することもできます。

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

リクエストを処理する時間のしきい値を決定する整数値 (秒単位)。デフォルト値は 600 (10 分) です。これはデフォルトパラメーターです。

URLDecodingHandler

指定された文字セットに URL およびクエリーパラメーターをデコードするハンドラー。このハンドラーを使用している場合は、UndertowOptions.DECODE_URL パラメーターを false に設定する必要があります。

これはパーサーの組み込み UTF-8 デコーダーを使用する場合よりも効率的ではありません。UTF-8 以外の文字セットにデコードする必要がない限り、パーサーのデコードを使用してください。

クラス名: io.undertow.server.handlers.URLDecodingHandler

名前: url-decoding

表A.18 パラメーター

名前説明

charset

デコードする文字セット。これはデフォルトパラメーターであり、必須です。