この章では、obj.conf
ファイルで使用される事前定義済のサーバー・アプリケーション関数(SAF)およびフィルタについて説明します。obj.conf
ファイルの構文および使用の詳細は、第4章「obj.confの構文および使用」を参照してください。
各SAFには、obj.conf
ディレクティブによって渡される独自のパラメータがあります。SAFは、サーバー変数を調査、変更または作成できます。各SAFは、成功、無効または失敗のいずれであるかを示す結果コードを返します。
この章のSAFは、コール元のディレクティブのタイプによってグループ化されています。事前定義SAFとサーバー構成要素のアルファベット順のリストは、付録D「サーバー構成要素および事前定義SAFのアルファベット順のリスト」を参照してください。
この章の内容は次のとおりです。
bucket
パラメータは、すべてのSAFに共通です。関数にbucket=
bucket-nameパラメータを追加することで(bucket="cache-bucket"
など)、obj.conf
ファイルの任意のSAFのパフォーマンスを測定できます。バケット統計は、perfdump
ユーティリティによって表示されますが、このユーティリティは、管理者コンソール、CLIまたはservice-dump
SAFを通じて設定できます。
次のパフォーマンス・バケットが事前定義されています。
Authtrans
ディレクティブは、Oracle Traffic Directorに対し、クライアントにリソースへのアクセスを許可する前に認可をチェックするように指示します。詳細は、4.4.1項「AuthTrans」を参照してください。
この項では、次のAuthTrans
クラスの関数について詳細に説明します。
また、AuthTrans
ディレクティブでは、次の共通SAFも有効です。
get-sslid
関数は、現在のSSLセッションに固有の文字列を取得し、それをSession->client
パラメータ・ブロックのssl-id
変数として格納します。
注意: この関数は、下位互換性を維持する目的で提供されています。get-sslid の機能は、SSL接続の標準的な処理に組み込まれていました。 |
CGIの起動時に変数ssl-id
が存在する場合、それはHTTPS_SESSIONID
環境変数としてCGIに渡されます。get-sslid
関数にパラメータはなく、常にREQ_NOACTION
が返されます。これはSSLが無効の場合効果はありません。
qos-handler
関数は、仮想サーバーにおける現在のサービス品質(QoS)の統計を調査し、統計を記録して、エラーを返すことでQoSパラメータを適用します。この関数は、default
オブジェクトで構成される最初のAuthTrans
関数である必要があります。
例
AuthTrans fn= "qos-handler"
webapp-firewall
関数は、ルール・エンジンの有効化および無効化を制御します。仮想サーバー固有のobj.confにこの関数が存在する場合、その特定の仮想サーバーに対してルール・エンジンが有効であることを示します。
webapp-firewall
関数はデフォルトで構成されないため、ルール・エンジンは無効になります。ルール・エンジンが無効の場合、webapp-firewall-ruleset
要素により指定された構成ファイル内のディレクティブおよびルールのどちらも適用されません。
注意:
|
表5-1に、webapp-firewall
関数のパラメータを示します。これらのパラメータは、webapp-firewall-ruleset
要素内で指定された同等の設定より優先されます。
表5-1 webapp-firewallのパラメータ
パラメータ | webapp-firewall-ruleset内の同等の設定 | 説明 |
---|---|---|
DetectionOnly |
(オプション)ルール・エンジンによりルールを適用するかどうかを示します。 値 このパラメータが指定されず、 |
|
|
(オプション)リクエスト本文がWebアプリケーション・ファイアウォールによって処理されるかどうかを示します。 |
|
|
|
(オプション)レスポンス本文がWebアプリケーション・ファイアウォールによってバッファおよび処理されるかどうかを示します。レスポンス本文の処理が有効である場合、サーバーは、 |
NameTrans
ディレクティブは、仮想URLをサーバーの物理ディレクトリに変換します。NameTrans
ディレクティブは、default
オブジェクト内に出現する必要があります。詳細は、4.4.2項「NameTrans」を参照してください。
この項では、次のNameTrans
クラスの関数について詳細に説明します。
また、NameTrans
ディレクティブでは、次の共通SAFも有効です。
assign-name
関数は、現在のリクエストに一致するobj.conf
ファイル内のオブジェクトの名前を指定します。Oracle Traffic Directorは、defaultオブジェクトのディレクティブに優先して、名前を指定されたオブジェクトのディレクティブを処理します。
たとえば、default
オブジェクトに次のディレクティブがあるとします。
NameTrans fn="assign-name" name="personnel" from="/personnel"
Oracle Traffic Directorがhttp://
server-name/personnel
に対するリクエストを受信したとします。このNameTrans
ディレクティブを処理した後、Oracle Traffic Directorは、obj.conf
ファイル内でpersonnel
という名前のオブジェクトを検索し、引き続きpersonnel
オブジェクト内のディレクティブを処理します。
assign-name
関数は、REQ_NOACTION
を返します。
表5-2に、assign-name
関数のパラメータを示します。
表5-2 assign-nameのパラメータ
例
# This NameTrans directive is in the default object. NameTrans fn="assign-name" name="proxy-cache" from="/.proxycache" ... <Object name="proxy-cache"> ...additional directives.. </Object>
block-request-cookie
は、1つのパラメータ、"name"を必要とします。この新しいSAFが導入されて、名前によるリクエストCookieがブロックされます。
表5-4に、block-request-cookie
関数のパラメータを示します。
map
関数は、リクエストURIを別のサーバーのURLにマップするため、リクエストに対して別のサーバーからサービスを提供するように指定できます。複数のサーバー全体で特定のURIのロード・バランシングを行うには、map
関数とset-origin-server
関数を組み合せて使用します。map
関数は、クライアントがリクエストしているURIで特定の接頭辞を検索します。map
は、接頭辞を検出すると、その接頭辞をミラー・サイトの接頭辞に置き換えます。
表5-4に、map
関数のパラメータを示します。
表5-4 mapのパラメータ
パラメータ | 説明 |
---|---|
|
マップするURI接頭辞。接頭辞の末尾にはスラッシュを含めないでください。 |
|
リクエストのマップ先となるURL接頭辞。接頭辞の末尾にはスラッシュを含めないでください。このパラメータに指定された |
|
(オプション) |
(オプション) |
例
NameTrans fn="map" from="/" name="reverse-proxy" to="/"
reverse-map
関数は、Oracle Traffic Directorがリバース・プロキシとして動作する場合に、HTTPレスポンス・ヘッダーをリライトします。reverse-map
は、特定のレスポンス・ヘッダーのfrom
パラメータで指定されたURL接頭辞を検索します。from
接頭辞がレスポンス・ヘッダー値の先頭に一致する場合、reverse-map
は、一致する部分をto
接頭辞に置き換えます。
表5-5に、reverse-map
関数のパラメータを示します。
表5-5 reverse-mapのパラメータ
パラメータ | 説明 |
---|---|
|
リライトするURL接頭辞。 |
|
|
(オプション) |
|
(オプション) |
|
(オプション) headername HTTPレスポンス・ヘッダーをリライトするかどうかを示します。headernameは、ユーザー定義のヘッダー名です。 |
例
NameTrans fn="reverse-map" from="http://download.oracle.com/app/docs" to="/docs"
rewrite
関数では、URIとファイル・システム・パス間で柔軟なマッピングが可能になります。
次の表に、rewrite
関数のパラメータを示します。
表5-6 rewriteのパラメータ
パラメータ | 説明 |
---|---|
(オプション)リライトするリクエストのパスを指定するワイルドカード・パターン。デフォルトではすべてのパスに一致します。 |
|
|
(オプション)有効なルート・ドキュメント・ディレクトリへのファイル・システム・パス。 |
|
(オプション)このリクエストにディレクティブが適用される |
|
(オプション)リライトされる部分パス。空でない場合、パスはスラッシュ(/)で始める必要があります。 |
例
次のobj.conf
コードは、URI /~user/index.html
に対するリクエストをファイル・システム・パス/home/user/public_html/index.html
にマップします。
<If $path =~ "^/~([^/]+)(|/.*)$"> NameTrans fn="rewrite" root="/home/$1/public_html" path="$2" </If>
sed-request-header
は、リクエスト・ヘッダーをリライトし、"name"および"sed"の2つのパラメータが必要です。
次の表に、sed-request-header
関数のパラメータを示します。
例
次のようにして、指定したリクエスト・ヘッダーの値をリライトします
NameTrans fn="sed-request=header" name="x-someheader" sed="s/abcd/123/g"
PathCheck
ディレクティブは、NameTrans
ステップの後に返されるURLをチェックし、指定したオリジン・サーバーへのアクセスをクライアントが許可されているかどうかを確認します。詳細は、4.4.3項「PathCheck」を参照してください。
この項では、次のPathCheck
クラスの関数について詳細に説明します。
また、PathCheckディレクティブでは、次の共通SAFも有効です。
check-request-limits
関数は、特定の属性(クライアントIPアドレスなど)に一致する着信リクエストを監視し、構成可能な時間間隔において1秒当たりの平均リクエストを計算します。監視対象属性に一致するリクエストが、構成されたしきい値を超えると、後続の一致するリクエストはリクエスト・レートが低下するまでサービスを提供されません。この関数を使用して、サービス拒否攻撃の可能性を検出します。
max-rps
またはmax-connections
を指定する必要があり、指定しないとcheck-request-limits
では何も実行されません。監視する1つ以上の属性を入力しない場合、関数によってすべてのリクエストが監視されます。
デフォルトでは、リクエストのエントリは消去前に関数により300秒(5分)間保持されます。この時間を調整するには、magnus.conf
ファイルのinit-request-limits
SAFを使用します。
表5-8に、check-request-limits
関数のパラメータを示します。
表5-8 check-request-limitsのパラメータ
パラメータ | 説明 |
---|---|
(オプション)一致するリクエストの1秒当たりのしきい値。このしきい値を超えると、基準に一致する後続の接続にサービスが提供されません。使用可能なしきい値はサイトごとに大きく変わる可能性があるため、このパラメータにデフォルト値はありません。 |
|
(オプション)一致する同時接続の最大数。Oracle Traffic Directorが基準に一致するリクエストを受信し、その場合に現在処理中の一致するリクエストの数がこの数以上であると、リクエストは拒否されます。 この数は、任意の時点での現行リクエストであり、 使用可能な値はサイトごとに大きく変わる可能性があるため、このパラメータにデフォルト値はありません。 |
|
(オプション)1秒当たりの平均リクエストを計算するための時間間隔(秒単位)。 |
|
(オプション)ブロックされたリクエスト・タイプを再度サービス対象とするために、一致する必要のある条件。 有効な値は次のとおりです。
デフォルト値: |
|
(オプション)ブロックされたリクエストに使用するHTTPステータス・コード。デフォルト値: |
|
(オプション)監視するリクエスト属性。リクエスト・レートは、このパラメータの値で名前を指定されたバケットで追跡されます。
事前定義変数のリストは、「事前定義変数」を参照してください。 |
|
event-notification-interval |
(オプション) request-limit-exceeded通知がHTTPエンドポイント・サーバーに送信される時間間隔(秒単位)。event-notification-intervalが0の場合、通知は送信されません。 デフォルト値: 範囲: |
例
次の例では、デフォルトの30秒間隔で、最大リクエスト・レートとして1秒当たり10リクエストにクライアントIPを制限します。
PathCheck fn="check-request-limit" monitor="$ip" max-rps="10"
次の例では、Perl CGIへのアクセス時に、最大リクエスト・レートとして1秒当たり10リクエストにクライアントIPを制限します。他のタイプのリクエストは制限されません。
<If path = "*.pl"> PathCheck fn="check-request-limits" monitor="$ip" max-rps="10" </If>
If
タグの使用の詳細は、「If、ElseIfおよびElse」を参照してください。
次の例では、Perl CGIに対するリクエストを1秒当たり10リクエストにグローバルに制限します。特定のmonitor
パラメータは指定されません。
<If path = "*.pl"> PathCheck fn="check-request-limits" max-rps="10" </If>
次の例では、クライアントIPが1秒当たり10を超えるPerl CGIリクエストを生成しないように、または1秒当たり5を超えるJSPリクエストを生成しないように制限します。PerlとJSPの合計を個別に追跡するには、指定するmonitor
パラメータに固定文字列識別子とクライアントIP変数の両方を含めます。
<If path = "*.pl"> PathCheck fn="check-request-limits" max-rps="10" monitor="perl:$ip" </If> <If path = "*.jsp"> PathCheck fn="check-request-limits" max-rps="5" monitor="jsp:$ip" </If>
次の例では、所定の時間において1つのクライアントIPを5以下の接続に制限します。
PathCheck fn="check-request-limits" max-connections="2" monitor="$ip"
deny-existence
関数は、クライアントが指定したパスへのアクセスを試行したときに、404 Not Found
メッセージを送信します。
表5-9に、deny-existence
関数のパラメータを示します。
表5-9 deny-existenceのパラメータ
パラメータ | 説明 |
---|---|
(オプション)隠蔽するファイル・システム・パスのワイルドカード・パターン。パスに一致しない場合、関数は何も実行せず、 |
|
(オプション) |
例
PathCheck fn="deny-existence" path="/opt/oracle/webserver7/docs/private" PathCheck fn="deny-existence" bong-file="/svr/msg/go-away.html"
get-client-cert
関数は、SSL3セッションから認証済のクライアント証明書を取得します。これは、すべてのHTTPメソッドに適用されるか、指定したパターンに一致するものだけに適用されます。これは、Oracle Traffic DirectorでSSLが有効な場合にのみ動作します。
証明書が存在するか、SSL3セッションから取得されると、関数はREQ_NOACTION
を返し、リクエストは処理を継続できます。それ以外の場合は、REQ_ABORTED
を返し、プロトコル・ステータスを403 forbidden
に設定するため、リクエストは失敗します。
次の表に、get-client-cert
関数のパラメータを示します。
表5-10 get-client-certのパラメータ
パラメータ | 説明 |
---|---|
(オプション)証明書を取得するか、その存在についてテストするのみかを制御します。
デフォルト値: |
|
(オプション)クライアント証明書の取得に失敗した場合にHTTPリクエストを中断するかどうかを制御します。
デフォルト値: |
|
(オプション)関数を適用するHTTPメソッドのワイルドカード・パターンを指定します。 |
例
# Get the client certificate from the session. # If a certificate is not already associated with the session, request one. # The request fails if the client does not present a #valid certificate. PathCheck fn="get-client-cert" dorequest="1"
(Windowsのみ) nt-uri-clean
関数は、物理パスに\.\
、\..\
または\\
が含まれるリソースに対するアクセスを拒否します(これらはセキュリティ問題を引き起こす可能性があります)。
表5-11に、nt-uri-clean
関数のパラメータを示します。
表5-11 nt-uri-cleanのパラメータ
パラメータ | 説明 |
---|---|
(オプション)存在する場合、URIでチルダ文字(~)が許可されます。たとえば、 |
|
(オプション)存在する場合、 |
例
PathCheck fn="nt-uri-clean"
ssl-logout
関数は、Oracle Traffic DirectorのSSLセッション・キャッシュの現在のSSLセッションを無効化します。これは、現在のリクエストには影響しませんが、次回クライアントが接続を行ったときに、新しいSSLセッションが作成されます。SSLが有効な場合、この関数は、セッション・キャッシュ・エントリを無効化した後、REQ_PROCEED
を返します。SSLが無効な場合、REQ_NOACTION
を返します。
ObjectType
ディレクティブは、リクエストへのレスポンスとしてクライアントに送信する必要のあるファイルのMIMEタイプを決定します。詳細は、「ObjectType」を参照してください。
この項では、次のObjectType
クラスの関数について詳細に説明します。
また、ObjectType
ディレクティブでは、次の共通SAFも有効です。
block-auth-cert
関数は、Oracle Traffic Directorに対し、独自のProxy-auth-cert
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-auth-cert"
block-cache-info
関数は、Oracle Traffic Directorに対し、独自のProxy-cache-info
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-cache-info"
block-cipher
関数は、Oracle Traffic Directorに対し、独自のProxy-cipher
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-cipher"
block-ip
関数は、Oracle Traffic Directorに対し、独自のClient-ip
ヘッダー(またはWebLogic Serverの場合はWl-proxy-client-ip
ヘッダー)を生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-ip"
block-issuer-dn
関数は、Oracle Traffic Directorに対し、独自のProxy-issuer-dn
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-issuer-dn"
block-jroute
関数は、Oracle Traffic Directorに対し、独自のProxy-jroute
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-jroute"
block-keysize
関数は、Oracle Traffic Directorに対し、独自のProxy-keysize
ヘッダー(またはWebLogic Serverの場合はWl-proxy-client-keysize
ヘッダー)を生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-keysize"
block-proxy-agent
関数は、Oracle Traffic Directorに対し、独自のProxy-agent
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-proxy-agent"
block-secret-keysize
関数は、Oracle Traffic Directorに対し、独自のProxy-secret-keysize
ヘッダー(またはWebLogic Serverの場合はWl-proxy-client-secretkeysize
ヘッダー)を生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-secret-keysize"
block-ssl
関数は、Oracle Traffic Directorに対し、独自のProxy-ssl
ヘッダー(またはWebLogic Serverの場合はWl-proxy-ssl
ヘッダー)を生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-ssl"
block-ssl-id
関数は、Oracle Traffic Directorに対し、独自のProxy-ssl-id
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-ssl-id"
block-user-dn
関数は、Oracle Traffic Directorに対し、独自のProxy-user-dn
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-user-dn"
block-via
関数は、Oracle Traffic Directorに対し、独自のVia
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-via"
block-xforwarded-for
関数は、Oracle Traffic Directorに対し、独自のX-forwarded-for
ヘッダーを生成してオリジン・サーバーに転送しないよう指示します。さらに、着信リクエストにこのヘッダーが含まれる場合、SAFはOracle Traffic Directorに対し、このヘッダーが含まれる着信リクエストをオリジン・サーバーに受け渡すことを許可します。
例
ObjectType fn="block-xforwarded-for"
forward-auth-cert
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-auth-cert
内にクライアントのSSL/TLS証明書に関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-auth-cert
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-13に、forward-auth-cert
関数のパラメータを示します。
表5-13 forward-auth-certのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション) BASE64エンコーディングでクライアントのDERエンコードのSSL/TLS証明書を伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
forward-cache-info
関数は、Oracle Traffic Directorに対し、ヘッダーCache-info
内にローカル・ヒットに関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーCache-info
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-14に、forward-cache-info
関数のパラメータを示します。
表5-14 forward-cache-infoのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)ローカル・キャッシュ・ヒットに関する情報を伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
forward-cipher
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-cipher
内にクライアントのSSL/TLS暗号スイートに関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-cipher
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-15に、forward-cipher
関数のパラメータを示します。
表5-15 forward-cipherのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)クライアントのSSL/TLS暗号スイートの名前を伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
forward-ip
関数は、Oracle Traffic Directorに対し、ヘッダーClient-ip
(またはWebLogic Serverの場合はWI-proxy-client-ip
)内にクライアントのIPアドレスを生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーClient-ip
(またはWebLogic Serverの場合はWI-proxy-client-ip
)が含まれる場合、このSAFによりOracle Traffic Directorは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。次に、Oracle Traffic Directorは適切な値でこのヘッダーを生成し挿入してから、オリジン・サーバーにリクエストを転送します。
表5-16に、forward-ip
関数のパラメータを示します。
表5-16 forward-ipのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)クライアントのIPアドレスを伝達するために使用するHTTPリクエスト・ヘッダーの名前。 デフォルト値: オリジン・サーバーが非WLSである場合は |
forward-issuer-dn
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-issuer-dn
内にクライアントのSSL/TLS証明書に関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-issuer-dn
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-17に、forward-issuer-dn
関数のパラメータを示します。
表5-17 forward-issuer-dnのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)クライアントのSSL/TLS証明書の発行者の識別名を伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
forward-jroute
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-jroute
内にリクエストのルーティングに関する情報を生成してオリジン・サーバーに転送するよう指示します。Proxy-jroute
ヘッダー・フィールドは、セッションの固定性を実装するため、set-origin-server
関数と一部のサーブレット・コンテナによって使用されます。着信リクエストにヘッダーProxy-jroute
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-18に、forward-jroute
関数のパラメータを示します。
forward-keysize
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-keysize
内にクライアントのSSL/TLSの鍵サイズに関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-keysize
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-19に、forward-keysize
関数のパラメータを示します。
表5-19 forward-keysizeのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)クライアントのSSL/TLSの鍵サイズを伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
forward-proxy-agent
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-agent
内にバージョン情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-agent
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-20に、forward-proxy-agent
関数のパラメータを示します。
forward-secret-keysize
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-secret-keysize
(またはWebLogic Serverの場合はWl-proxy-client-secretkeysize
)内にクライアントのSSL/TLSの秘密鍵サイズに関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-secret-keysize
(またはWebLogic Serverの場合はWl-proxy-client-secretkeysize
)が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-21 forward-secret-keysizeのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)クライアントのSSL/TLS秘密鍵を伝達するために使用するHTTPリクエスト・ヘッダーの名前。 デフォルト値: オリジン・サーバーが非WLSである場合は |
例
ObjectType fn="forward-secret-keysize"
forward-ssl
関数はサーバーに対し、リモート(オリジン)サーバーに情報を転送し、クライアントがSSL接続を介してOracle Traffic Directorにリクエストを送信したかどうかをチェックするよう指示します。その結果、クライアントが非SSL接続を使用してOTDに接続している場合、このヘッダーには値Falseが設定されます。同様に、クライアントがSSL接続を使用してOTDに接続している場合、このヘッダーには値Trueが設定されます。着信リクエストにヘッダーProxy-ssl
(またはWebLogic Serverの場合はWI-proxy-ssl
)が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-22 forward-ssl
パラメータ | 説明 |
---|---|
hdr |
クライアントとOTDとの接続がSSLを介して行われたことを伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: オリジン・サーバーが非WLSである場合は |
例
ObjectType fn="forward-ssl"
forward-ssl-id
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-ssl-id
内にクライアントのSSL/TLSセッションIDに関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-ssl-id
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-23に、forward-ssl-id
関数のパラメータを示します。
表5-23 forward-ssl-idのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)クライアントのSSL/TLSセッションIDを伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
forward-user-dn
関数は、Oracle Traffic Directorに対し、ヘッダーProxy-user-dn
内にクライアントのSSL/TLS証明書のサブジェクトの識別名に関する情報を生成してオリジン・サーバーに転送するよう指示します。着信リクエストにヘッダーProxy-user-dn
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-24に、forward-user-dn
関数のパラメータを示します。
表5-24 forward-user-dnのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)クライアントのSSL/TLS証明書のサブジェクトの識別名を伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
forward-via
関数は、Oracle Traffic Directorに対し、ヘッダーVia
内にリクエストのルーティングに関する情報を生成し、HTTP/1.1 Via
形式を使用してオリジン・サーバーに転送するよう指示します。HTTP/1.1 Via
ヘッダー・フィールドは、リクエストのルーティングに関連するプロキシ・サーバーとプロトコル・バージョンを記録します。着信リクエストにヘッダーVia
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-25に、forward-via
関数のパラメータを示します。
forward-xforwarded-for
関数は、Oracle Traffic Directorに対し、ヘッダーX-Forwarded-For
内にユーザー指定のX-Forwarded-For
ヘッダー値に関する情報を生成してオリジン・サーバーに転送するよう指示します。関数が有効な場合、Oracle Traffic Directorは、X-Forwarded-For
ヘッダー値をオリジン・サーバーに送信します(値は、IPアドレスのカンマ区切りリストです)。このSAFはデフォルトで有効です。着信リクエストにヘッダーX-forwarded-for
が含まれる場合、このSAFによりOTDは、オリジン・サーバーに転送されるリクエストからヘッダーを削除します。
表5-26 forward-xforwarded-for
パラメータ | 説明 |
---|---|
hdr |
(オプション)ルーティング情報を伝達するために使用するHTTPリクエスト・ヘッダーの名前。デフォルト値: |
例
ObjectType fn="forward-xforwarded-for"
http-client-config
関数は、Oracle Traffic DirectorのHTTPクライアントを構成します。
表5-27に、http-client-config
関数のパラメータを示します。
表5-27 http-client-configのパラメータ
パラメータ | 説明 |
---|---|
(オプション) HTTPクライアントですべてのタイプのリクエストに既存の永続接続を再利用するかどうかを示します。デフォルト値: WLSオリジン・サーバーは |
|
(オプション) Oracle Traffic Directorでエスケープしない文字のリストを指定します。アプリケーション・サーバーにデプロイされた様々なアプリケーションで、一定の文字のエスケープは禁止されます。このパラメータを指定しない場合、Oracle Traffic Directorによってそれらの文字がエスケープされる可能性があります。次に例を示します。
|
|
(オプション) HTTPクライアントで永続接続を使用するかどうかを示します。デフォルト値: |
|
(オプション)永続接続のオープン状態を維持する最大秒数。デフォルト値: |
|
(オプション) Oracle Traffic Directorがオリジン・サーバーを対象に送受信したリクエスト・ヘッダーまたはレスポンス・ヘッダーをサーバー・ログに記録するかどうかを指定します。このパラメータは、診断目的で役立ちます。 次に例を示します。
|
|
(オプション) HTTPプロトコルのバージョン文字列。デフォルトで、HTTPクライアントは、HTTPリクエストのコンテンツに基づいて |
|
(オプション) proxy-agent HTTPリクエスト・ヘッダーの値。デフォルトは、Webサーバーの製品名とバージョンを含む文字列です。 |
|
(オプション)データをクライアントに送信する前に格納するためにOracle Traffic Directorで使用するバッファのサイズを指定します。バッファ・サイズが大きくなるほど、writeシステム・コールの数は少なくなります。デフォルトでは、プロキシ・バッファ・サイズの値は16KBです。値を32KBに変更するには、パラメータを次のように使用します。
|
|
(オプション)クライアントにエラーを送信する前にオリジンWebサーバーからコンテンツを取得するための再試行回数。 |
例
ObjectType fn="http-client-config" keep-alive="false"
proxy-cache-config
関数は、リバース・プロキシのキャッシュ設定を構成します。
表5-28に、proxy-cache-config
関数のパラメータを示します。
表5-28 proxy-cache-configのパラメータ
パラメータ | データ型 | 説明 | デフォルト値 |
---|---|---|---|
Boolean |
リバース・プロキシ・コンテンツのキャッシュを有効化または無効化します。 |
false |
|
|
Integer |
(オプション)最新であることを連続的にチェックする間隔として許容される最大時間(秒単位)を指定します。0 (デフォルト値)に設定すると、ドキュメントがアクセスされるたびにチェックが実行され、 注意: この要素の値を設定すると、サーバーは、HTTP仕様の規定内容とは異なる動作をします。 |
|
|
Integer |
キャッシュされたドキュメントが最新であることを連続的にチェックする間隔として許容される最小時間(秒単位)を指定します。 |
|
|
Float |
(オプション)失効時間の見積りに使用されるファクタを表します。これにより、最終変更時刻に基づいてドキュメントが最新状態である期間が定義されます。最終変更後に経過した時間には、このファクタが乗じられます。結果として、ドキュメントの未変更状態が続く可能性のある推定時間が得られます。値 |
|
|
Integer |
キャッシュされるドキュメントの最小サイズ(バイト単位)。これは、よりサイズの大きいドキュメントのみをキャッシュする場合に便利です。 |
|
|
Integer |
指定された値にキャッシュする文書の最大サイズを制限します。この値は、 |
|
|
Integer |
問合せ文字列(キャッシュ可能なURL末尾の?string部分)の文字数を指定します。同じ問合せが複数のユーザーによって正確に同じ形式で繰り返されることはめったにないため、通常、これらをキャッシュすることは推奨されません。 |
|
|
Boolean |
このパラメータを |
|
|
Boolean |
このパラメータを |
|
例
ObjectType fn="proxy-cache-config" enable="1" max-reload-interval=300 min-reload-interval=60
proxy-cache-override-http
関数は、特定のHTTPキャッシュ・ルールをオーバーライドするリバース・プロキシのキャッシュ・パラメータを構成します。
表5-29に、proxy-cache-override-http
関数のパラメータを示します。
表5-29 proxy-cache-override-httpのパラメータ
パラメータ | データ型 | 説明 | デフォルト値 |
---|---|---|---|
Boolean |
このパラメータを |
|
|
|
Boolean |
このパラメータを |
|
|
Boolean |
このパラメータを |
|
|
Boolean |
|
|
|
Boolean |
このパラメータを |
|
|
Boolean |
このパラメータを |
|
|
Boolean |
このパラメータを |
|
|
Boolean |
このパラメータを |
|
|
Boolean |
このパラメータを |
|
例
<If uri =~ '^/images/'> ObjectType fn="proxy-cache-config" enable="1" max-reload-interval=600 ObjectType fn="proxy-cache-override-http" ignore-client-no-cache="true" </If> <Else uri =~ '^/myapp/'> ObjectType fn="proxy-cache-config" enable="1" max-reload-interval=120 </Else>
proxy-websocket-config
SAFは、WebSocketアップグレードを無効にし、WebSocket接続のidle-timeoutを変更します。WebSocketアップグレードはデフォルトで有効です。WebSocketアップグレードを無効にする必要がある場合、enabled
をoff
に指定してproxy-websocket-config
を使用できます。proxy-websocket-config
ディレクティブは、ルートではルート・オブジェクトに、また仮想サーバー全体ではデフォルト・オブジェクトに存在します。これにより管理者は、WebSocketトラフィックを無効にしたり、特定のルートまたは仮想サーバー全体に異なるidle-timeout
値を設定できます。
表5-30に、proxy-cache-override-http
関数のパラメータを示します。
表5-30 proxy-websocket-configのパラメータ
パラメータ | デフォルト値 |
---|---|
onまたはoff |
|
|
デフォルトは、tcp-thread-pool要素に指定されたタイムアウト値です。 |
例
ObjectType fn="proxy-websocket-config"
reverse-block-date
SAFは、オリジン・サーバーから送信されるDateヘッダーをブロックし、Oracle Traffic Directorが独自のDateヘッダーを生成してレスポンスに挿入するようにします。
例
ObjectType fn="reverse-block-date"
reverse-block-server
SAFは、オリジン・サーバーから送信されるServerヘッダーをブロックし、Oracle Traffic Directorが独自のServerヘッダーをレスポンスに挿入するようにします。
例
ObjectType fn="reverse-block-server"
reverse-forward-date
SAFは、オリジン・サーバーから送信されるDateヘッダーを転送します。Oracle Traffic Directorでは、これはデフォルトの動作です。
例
ObjectType fn="reverse-forward-date"
reverse-forward-server
SAFは、オリジン・サーバーから送信されるServerヘッダーを転送します。オリジン・サーバーがServerヘッダーを生成しない場合、Oracle Traffic Directorが独自のServerヘッダーを生成して使用します。これはデフォルトの動作です。
例
ObjectType fn="reverse-forward-server"
set-basic-auth
関数により、サーバーがHTTPリクエストを送信する際に使用するHTTP Basic認証資格証明を設定できます。set-basic-auth
を使用して、リモート・オリジン・サーバーまたはプロキシ・サーバーに対して認証します。
次の表に、set-basic-auth
関数のパラメータを示します。
表5-31 set-basic-authのパラメータ
パラメータ | 説明 |
---|---|
認証するユーザーの名前。 |
|
|
認証するユーザーのパスワード。 |
|
(オプション)資格証明を伝達するために使用するHTTPリクエスト・ヘッダーの名前。 |
|
(オプション)すべての |
例
ObjectType fn="set-basic-auth" user="admin" password="secret" hdr="proxy-authorization"
set-cache-control
関数では、クライアントに戻されるレスポンスのHTTPキャッシュ・ポリシーを指定できます。
次の表に、set-cache-control
関数のパラメータを示します。
次の表に、HTTP/1.1プロトコルで定義されている有益なキャッシュ制御ディレクティブの一部を示します。
表5-33 キャッシュ制御ディレクティブ
ディレクティブ | 説明 |
---|---|
|
レスポンスは、任意のキャッシュによってキャッシュされます。 |
|
レスポンスは、共有キャッシュ(プロキシ・サーバーなど)にはキャッシュされません。 |
|
クライアントは、アクセスごとに更新されたコンテンツの存在をOracle Traffic Directorに確認する必要があります。 |
|
レスポンスは、n秒を超えてはキャッシュされません。 |
例
ObjectType fn="set-cache-control" control="private,max-age=60"
set-cookie
関数では、クライアントに戻されるレスポンスにCookieを設定できます。
次の表に、set-cookie
関数のパラメータを示します。
表5-34 set-cookieのパラメータ
パラメータ | 説明 |
---|---|
|
Cookieの名前。 |
|
(オプション) Cookieの値。デフォルト値: |
|
(オプション) Cookieを適用するベースURI。デフォルト値: |
(オプション) Cookieを送信する必要のあるサーバーのドメイン名。ドメインを指定しない場合、Webブラウザは、Cookieを設定するOracle Traffic DirectorにのみCookieを送信します。 |
|
(オプション) Cookieが期限切れになるまでの最大時間(秒単位)。 |
例
<If not defined $cookie{'FIRSTVISITTIME'}> ObjectType fn="set-cookie" name="FIRSTVISITTIME" value="$time" max-age="31536000" </If>
type-by-exp
関数は、現在のパスとワイルドカード式を照合します。一致する場合、type
パラメータの情報がファイルに適用されます。これは、URLに指定されたファイルまたはディレクトリに対してワイルドカード・パターンを使用することを除けば、type-by-extension
と同じです。
表5-35に、type-by-exp
関数のパラメータを示します。
表5-35 type-by-expのパラメータ
パラメータ | 説明 |
---|---|
この関数を適用するパスのワイルドカード・パターン。 |
|
(オプション)一致するリクエストに割り当てるタイプ( |
|
(オプション)一致するリクエストに割り当てるエンコーディング( |
|
(オプション)一致するリクエストに割り当てる言語( |
|
(オプション) |
例
ObjectType fn="type-by-exp" exp="*.test" type="application/html"
type-by-extension
関数は、Oracle Traffic Directorに対し、MIMEタイプ・マッピングの表を検索して、リクエストされたリソースのMIMEタイプを検出するように指示します。MIMEタイプは、クライアントに戻されるContent-Type
ヘッダーに追加されます。
MIMEタイプ・マッピングの表は、MIMEタイプのファイルまたはリストをロードしてマッピングを作成するserver.xml
ファイルのmime-file
要素によって作成されます。
たとえば、次の2つの行は、MIMEタイプ・ファイルの一部です。
type=text/html exts=htm,html type=text/plain exts=txt
リクエストされたリソースの拡張子がhtm
またはhtml
の場合、type-by-extension
ファイルは、そのタイプをtext/html
に設定します。拡張子が.txt
の場合、関数はそのタイプをtext/plain
に設定します。
例
ObjectType fn="type-by-extension"
Input
ディレクティブでは、Service
ステージで読み取られる着信リクエスト・データを処理するフィルタを選択できます。詳細は、「Input」を参照してください。
Input
クラス・フィルタの詳細は、「sed-request」を参照してください。
Input
ディレクティブでは、次の共通SAFも有効です。
Output
ステージでは、発信データを処理するフィルタを選択できます。詳細は、「Output」を参照してください。
どのOutput
ディレクティブにも次のオプション・パラメータがあります。
表5-37 Outputディレクティブのオプション・パラメータ
パラメータ | 説明 |
---|---|
(オプション)この関数を実行するMIMEタイプのワイルドカード・パターンを指定します。 |
|
(オプション)この関数を実行するHTTPメソッドのワイルドカード・パターンを指定します。一般的なHTTPメソッドは、 |
|
(オプション)この関数を実行する問合せ文字列のワイルドカード・パターンを指定します。 |
Output
クラス・フィルタは次のとおりです。
Outputディレクティブでは、次の共通SAFも有効です。
Route
ディレクティブは、Webサーバーによるリクエストのルーティング場所に関する情報を指定します。詳細は、「Route」を参照してください。
この項では、次のRoute
クラスの関数について詳細に説明します。
また、Routeディレクティブでは、次の共通SAFも有効です。
set-origin-server
関数は、同機種のHTTPオリジン・サーバーのセット全体に負荷を分散します。このSAFは、このリクエストの指定オリジン・サーバー・プールからオリジン・サーバーを選択します。set-origin-server
SAFには、必須パラメータとしてorigin-server-pool
が必要です。
表5-38に、set-origin-server
関数のパラメータを示します。
表5-38 set-origin-serverのパラメータ
パラメータ | 説明 |
---|---|
|
(必須)構成済のオリジン・サーバー・プールの名前。このプールから、server.xmlの |
(オプション) Cookieのワイルドカード・パターンを指定し、レスポンスに含まれる場合は、後続のリクエストをそのオリジン・サーバーに固定します。これに基づいて、このCookieを持つ後続のリクエストは同じオリジン・サーバーに送信されます。 |
|
(オプション)ルート情報を検査するURIパラメータの名前。URIパラメータがリクエストURIに存在し、その値にコロン(:)が含まれ、その後にルートIDが続く場合、そのルートIDによって識別されるオリジン・サーバーにリクエストが固定されます。デフォルト値: |
|
(オプション)ルートIDをオリジン・サーバーに伝達するために使用されるHTTPリクエスト・ヘッダーの名前。 |
|
(オプション)レスポンスに |
|
(オプション)ホストHTTPリクエスト・ヘッダーを、 |
|
(オプション) |
|
(オプション) Oracle Traffic Directorパラメータに一致する |
|
(オプション) Oracle Traffic Directorパラメータに一致するheadername HTTPレスポンス・ヘッダーをリライトするかどうかを示します。headernameは、ユーザー定義のヘッダー名です。headernameは小文字です。 |
例5-2 Sticky-cookieの例
Route fn="set-origin-server" origin-server-pool="custom-pool" sticky-cookie="(*JSESSION[12]|M?SESSIONID[^1]|pass\\*through*~pass\\*throughno)" The above sticky-cookie pattern will match an origin-server cookie if the cookie:
ゼロ以上の任意の文字で始まり、その後にJSESSIONが続き、その後に1または2が続くもの(または)
Mで始まり、その後に任意の文字、SESSIONID、1以外の文字が続くもの(または)
pass*throughnoという名前のCookieを除く、pass*throughで始まるもの
Route fn="set-origin-server" origin-server-pool="custom-pool" sticky-cookie="SESSION" will match only if the origin-server cookie is "SESSION" Route fn="set-origin-server" origin-server-pool="custom-pool" sticky-cookie="*" will match any cookie that is sent by origin-server
set-proxy-server
関数は、Oracle Traffic Directorに対し、特定のプロキシ・サーバーから現在のリソースを取得するように指示します。
表5-39に、set-proxy-server
関数のパラメータを示します。
表5-39 set-proxy-server
のパラメータ
パラメータ | 説明 |
---|---|
|
リモート・プロキシ・サーバーのURL。複数のサーバー・パラメータを指定すると、Oracle Traffic Directorは、指定したリモート・サーバー全体に負荷を分散します。 |
例
Route fn="set-proxy-server" server="http://webcache1.eng.sun.com:8080" server="http://webcache2.eng.sun.com:8080"
Service
ディレクティブは、クライアントにレスポンス・データを送信します。詳細は、「Service」を参照してください。
どのService
ディレクティブにも、関数を実行するかどうかを決定するための次のオプション・パラメータがあります。関数を実行するには、すべてのオプション・パラメータが現在のリクエストに一致する必要があります。
表5-40 Serviceディレクティブのオプション・パラメータ
オプション・パラメータ | 説明 |
---|---|
この関数を実行するMIMEタイプのワイルドカード・パターンを指定します。 |
|
この関数を実行するHTTPメソッドのワイルドカード・パターンを指定します。一般的なHTTPメソッドは、 |
|
この関数を実行する問合せ文字列のワイルドカード・パターンを指定します。 |
|
クライアントにデータを送信するための、デフォルトの出力ストリーム・バッファ・サイズ(バイト単位)を決定します。このパラメータを指定しない場合、デフォルトは 注意: このパラメータをゼロ( |
|
バッファリングを有効にする書込み操作間の最大ミリ秒数を決定します。後続の書込み操作間の間隔がアプリケーションの |
|
リクエスト・データのチャンクを解除するためのデフォルトのバッファ・サイズ(バイト単位)を決定します。このパラメータを指定しない場合、デフォルトは |
|
リクエスト・データのチャンクを解除するためのデフォルトのタイムアウト(秒単位)を決定します。このパラメータを指定しない場合、デフォルトは |
Service
クラスの関数が複数ある場合、オプションのワイルドカード・パラメータ(type
、method
およびquery
)に一致する最初の関数が実行されます。
UseOutputStreamSize
、ChunkedRequestBufferSize
およびChunkedRequestTimeout
パラメータにも、同等のmagnus.conf
ディレクティブがあります。obj.conf
パラメータは、magnus.conf
ディレクティブをオーバーライドします。
デフォルトで、Oracle Traffic Directorは、send-file
関数をコールして、リクエストされたファイルをクライアントに送信します。デフォルトを設定するディレクティブは次のとおりです。
Service method="(GET|HEAD)" type="*~magnus-internal/*" fn="send-file"
このディレクティブは、通常、他のすべてのService
ディレクティブに起動の機会を与えるため、Service
クラスのディレクティブ・セット内の最後に配置されます。このディレクティブは、リクエストのメソッドがGET
、HEAD
またはPOST
で、タイプがmagnus-internal/
で始まらない場合に起動されます。パターン*~
は、不一致を意味することに注意してください。パターンで使用できる文字のリストは、「ワイルドカード・パターン」を参照してください。
次の項では、Service
ディレクティブで使用される関数について説明します。
また、Serviceディレクティブでは、次の共通SAFも有効です。
proxy-retrieve
関数は、リモート・サーバーからドキュメントを取得してクライアントに返します。この関数では、任意のメソッドを許可またはブロックするようにOracle Traffic Directorを構成することもできます。この関数は、HTTPプロトコルでのみ動作します。
表5-41に、proxy-retrieve
関数のパラメータを示します。
表5-41 proxy-retrieveのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
例
# Normal proxy retrieve Service fn="proxy-retrieve" # Proxy retrieve with POST method disabled Service fn="proxy-retrieve" method="(POST)"
remove-filter
関数は、フィルタ・スタックからフィルタを削除するために使用します。フィルタを複数回挿入すると、最上位のインスタンスのみが削除されます。一般的に、フィルタはリクエストの最後に自動的に削除されるため、remove-filter
を使用して削除する必要はありません。
次の表に、remove-filter
関数のパラメータを示します。
表5-42 remove-filterのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
例
Service fn="remove-filter"
service-proxy-cache-dump
関数は、現在のリバース・プロキシのキャッシュ統計をダンプします。
表5-43に、service-proxy-cache-dump
関数のパラメータを示します。
表5-43 service-proxy-cache-dumpのパラメータ
パラメータ | 説明 |
---|---|
|
キャッシュのオブジェクトをリストします。 キャッシュのリストには、URI、フラグのセット、キャッシュ・エントリに対する現在の参照数、およびエントリのサイズが含まれます。 |
|
このパラメータの値を |
|
キャッシュを停止して再起動します。 |
|
キャッシュを起動します。 |
|
キャッシュを停止します。 |
例
<Object name="default" NameTrans fn=assign-name name="proxy-cache" from="/.proxycache" </Object> <Object name="proxy-cache"> Service fn="service-proxy-cache-dump" </Object>
service-trace
関数は、TRACE
リクエストにサービスを提供します。TRACE
リクエストは、WebクライアントとWebサーバー間に存在するWebプロキシの問題を診断するために使用します。
表5-44に、service-trace
関数のパラメータを示します。
表5-44 service-traceのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
例
<Object name="default"> ... Service method="TRACE" fn="service-trace" ... </Object>
stats-xml
関数は、XML形式でパフォーマンス・レポートを作成します。パフォーマンス・バケットが定義されている場合、このパフォーマンス・レポートにそれらが含まれます。
レポートが生成される場所は次のとおりです。
http://server_id:portURI
次に例を示します。
http://example.com:80/stats-xml
次の表に、stats-xml
関数のパラメータを示します。
表5-45 stats-xmlのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
例
<Object name="default"> <If uri = "/stats-xml/*"> Service fn="stats-xml" </If> ... </Object>
AddLog
ディレクティブは、トランザクションに関する情報を記録するために実行されます。詳細は、「AddLog」を参照してください。
この項では、次のAddLog
クラスの関数について詳細に説明します。
また、AddLog
ディレクティブでは、次の共通SAFも有効です。
flex-log
関数は、フレキシブル・ログ形式でリクエスト固有のデータを記録します。これは、共通ログ形式でリクエストを記録することもできます。Webサーバーの/bin
ディレクトリにログ・アナライザ(flexanlg
)が存在します。共通ログ形式の場合、無償の統計ジェネレータも多くあります。
server.xml
のaccess-log
要素のformat
サブ要素を使用してログ形式を指定します。詳細は、「access-log」を参照してください。ログ形式の詳細は、「カスタム・アクセス・ログ・ファイル形式の使用」を参照してください。
表5-46に、flex-log
関数のパラメータを示します。
表5-46 flex-logのパラメータ
パラメータ | 説明 |
---|---|
(オプション)ログ・ファイルの名前を指定します。名前は、 |
|
(オプション) Oracle Traffic Directorに対し、DNS名を参照して記録するのではなく、リモート・クライアントのIPアドレスを記録するように指示します。これによって、DNSが無効の場合のパフォーマンスが向上します。 |
例
# Log all accesses to the default log file AddLog fn="flex-log" # Log accesses from outside our subnet (198.93.5.*) to # nonlocallog <Client ip="*~198.93.5.*"> AddLog fn="flex-log" name="nonlocallog" </Client>
SAFでエラーが発生した場合、Oracle Traffic Directorは、他のすべてのディレクティブの実行を停止して、即座にError
ディレクティブの実行を開始します。詳細は、「Error」を参照してください。
この項では、次のError
クラスの関数について詳細に説明します。
また、Error
ディレクティブでは、次の共通SAFも有効です。
qos-error
関数は、エラーを引き起こしたサービス品質とQoS統計の値を示したエラー・ページを返します。
表5-47に、qos-error
関数のパラメータを示します。
表5-47 qos-errorのパラメータ
例
Error fn="qos-error" code="503"
send-error
関数は、特定のHTTPレスポンス・ステータスのかわりにクライアントにHTMLファイルを送信します。これによりサーバーは、問題を説明するメッセージを表示できます。HTMLページには、イメージおよびサーバーのホーム・ページまたはその他のページへのリンクが含まれます。
表5-48に、send-error
関数のパラメータを示します。
表5-48 send-errorのパラメータ
パラメータ | 説明 |
---|---|
|
クライアントに送信するHTMLファイルの絶対パスを指定します。ファイルが存在しないかアクセス不可である場合、サーバーにより404または403エラー・ページが返されます。ファイルは、名前または実際のタイプに関係なくtext/htmlとして送信されます。 |
(オプション) HTTPレスポンス・ステータス・コードを表す3桁の数字( HTTP仕様に準拠した任意のHTTPレスポンス・ステータス・コードまたは理由フレーズを使用できます。 一般的なHTTPレスポンス・ステータス・コードおよび理由文字列のリストは、次のとおりです。
|
|
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
例
Error fn="send-error" code="401" path="/opt/oracle/webserver7/docs/errors/401.html"
この項では、複数のディレクティブに共通なSAFをリストします。
insert-filter
SAFは、クライアントからサーバーに着信するデータを処理するフィルタ・スタックにフィルタを追加するために使用します。Input fn="insert-filter"
ディレクティブとOutput fn="insert-filter"
ディレクティブの順序は重要です。
戻り値
指定されたフィルタの挿入に成功した場合はREQ_PROCEED
を返し、指定されたフィルタが不要なために挿入されなかった場合はREQ_NOACTION
を返します。他のすべての戻り値はエラーを示します。
パラメータ
次の表に、insert-filter
関数のパラメータを示します。
表5-50 insert-filter
のパラメータ
パラメータ | 説明 |
---|---|
|
(オプション) |
|
(オプション) |
|
(オプション) |
match-browser
関数は、ブラウザから提供されるUser-Agent
文字列の特定の文字列に一致します。その後、指定された変数の値を設定した結果に基づいてOracle Traffic Directorの動作を変更します。この関数は、すべてのディレクティブで使用できます。
構文
stage fn="match-browser" browser=
"string" name="value" [name="value" ]
パラメータ
次の表に、match-browser
関数のパラメータ値を示します。
表5-51 match-browserのパラメータ
値 | 説明 |
---|---|
stage |
|
string |
|
name |
変更する変数。 |
value |
指定した変数の新しい値。 |
例
AuthTrans fn="match-browser" browser="*[Bb]roken*" ssl-unclean-shutdown="true" keep-alive="disabled" http-downgrade="1.0"
ブラウザのUser-Agent
ヘッダーに文字列Broken
またはbroken
が含まれる場合、前述のAuthTrans
ディレクティブは、Oracle Traffic Directorに次のことを指示します。
SSL3およびTLSのclose_notify
パケットを送信しないこと
HTTPキープ・アライブに対するリクエストを受け入れないこと
HTTP/1.1ではなくHTTP/1.0プロトコルを使用すること
この例で使用されているssl-unclean-shutdown
などの変数の詳細は、「set-variable」を参照してください。
redirect
関数では、URLを変更して、更新されたURLをクライアントに送信できます。クライアントが古いパスを使用してサーバーにアクセスすると、Oracle Traffic Directorは、そのリクエストを新規URLに対するリクエストとして処理します。
redirect
関数は、クライアントのリダイレクト先のURLを検査します。URLがクライアントのリクエストしたURLと一致している場合(同じスキーム、ホスト名、ポートおよびパス)、この関数は、リダイレクトを実行せず、かわりにREQ_NOACTION
を返します。
表5-52に、redirect
関数のパラメータを示します。
表5-52 redirectのパラメータ
パラメータ | 説明 |
---|---|
(オプション)一致させるリクエストURIの接頭辞を指定します。 |
|
(オプション)クライアントに返す完全なURLを指定します。このパラメータを使用する場合、 |
|
(オプション)クライアントに返す新しいURL接頭辞。 |
|
(オプション) |
|
|
(オプション) HTTPステータス・コードをカスタマイズします。 |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
例
最初の例では、http://
server-name/
whateverに対するリクエストは、すべてhttp://tmpserver/
whateverに対するリクエストに変換されます。
NameTrans fn="redirect" from="/" url-prefix="http://tmpserver/"
2番目の例では、http://
server-name/toopopular/
whateverに対するリクエストは、http://bigger/better/stronger/morepopular/
に対するリクエストに変換されます。
NameTrans fn="redirect" from="/toopopular" url="http://bigger/better/stronger/morepopular"
remove-filter
SAFは、フィルタ・スタックからフィルタを削除するために使用します。フィルタを複数回挿入すると、最上位のインスタンスのみが削除されます。一般的に、フィルタはリクエストの最後に自動的に削除されるため、remove-filter
を使用して削除する必要はありません。
戻り値
指定されたフィルタの削除に成功した場合はREQ_PROCEED
を返し、指定されたフィルタがフィルタ・スタックの一部でなかった場合はREQ_NOACTION
を返します。他のすべての戻り値はエラーを示します。
パラメータ
次の表に、remove-filter
関数のパラメータを示します。
表5-53 remove-filterのパラメータ
パラメータ | 説明 |
---|---|
削除するフィルタの名前を指定します。 |
|
|
(オプション) |
|
(オプション) |
|
(オプション) |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
|
(オプション)すべての |
restart
関数では、HTTPリダイレクトをクライアントに送信することなく、Oracle Traffic Director内でURLリライティングを実行できます。restart
関数は、rq->reqpb
のuri
およびquery
の値を、uri
パラメータで指定されたURIと問合せ文字列に置き換え、REQ_RESTART
を返してリクエストを再起動します。
uri
パラメータに?
文字が含まれる場合、?
に続く値が問合せ文字列として使用されます。それ以外の場合、再起動されたリクエストに問合せ文字列は含まれません。新しいリクエストURIは、再度AuthTrans
ステージとNameTrans
ステージで処理されるため、無限ループを作成することは避けてください。
次の表に、restart
関数のパラメータを示します。
表5-54 restartのパラメータ
パラメータ | 説明 |
---|---|
(オプション)再起動するリクエストのパスを指定するワイルドカード・パターン。デフォルトではすべてのパスに一致します。 |
|
再起動するリクエストで使用するURIおよび問合せ文字列。 |
例
次のobj.conf
のコードは、Oracle Traffic Directorに、/index.html
に対するリクエストを/index.jsp
に対するリクエストと同様に処理するように指示します。
NameTrans fn="restart" from="/index.html" uri="/index.jsp"
rewrite-cookie
機能により、バック・エンド・サーバーにから返されるCookieの変更が可能です。
次の表に、rewrite-cookie
関数のパラメータを示します。
sed-param-name
関数は、指定されたpblockパラメータ名を、指定されたsed式に基づいて変更します。
次の表に、sed-param-name
関数のパラメータを示します。
例
次のようにして、"Content-length: 123"を"Content-Length: 123"に変換します
NameTrans fn="sed-param-name" pblock="headers" name="content-length" sed="s/-length/-Length/g"
sed-param-value
関数は、指定されたpblockパラメータ値を、指定されたsed式に基づいて変更します。
次の表に、sed-param-value
関数のパラメータを示します。
例
次のようにして、任意のpblockパラメータ値(指定された名前に対応)をリライトします
NameTrans fn="sed-param-value" pblock="reqpb" name="uri" sed="s/test/plan/g"
sed-response-header
は、レスポンス・ヘッダーをリライトし、"name"および"sed"の2つのパラメータが必要です。
戻り値
エラーが発生した場合はREQ_ABORTEDを返し、指定されたフィルタが不要なために挿入されなかった場合はREQ_NOACTIONを返します。
パラメータ
次の表に、sed-response-header
関数のパラメータ値を示します。
例
次のようにして、指定したレスポンス・ヘッダーの値をリライトします。
Output fn="sed-response-header" name="server" sed="s/backend/frontend/g"
set-priority
関数は、優先順位(HIGH、NORMALまたはLOW)をその他のSAFおよび後でコールされるフィルタ(check-req-limit, set-origin-server
など、および帯域幅フィルタ)に設定します。
set-priority
が使用されない場合、リクエストはデフォルトの優先順位、NORMALで実行されます。
優先順位の値は、HIGHは2、NORMALは1およびLOWは0で、rq->vars
に格納されます。
access-log
形式を、たとえば、%Req->vars.priority%
のように変更して、優先順位を含めることができます。
次の表に、set-priority
関数のパラメータを示します。
表5-59 restartのパラメータ
値 | 説明 |
---|---|
|
サポートされる優先順位の値は次のとおりです。
優先順位値では大/小文字が区別されます。 |
|
再起動するリクエストで使用するURIおよび問合せ文字列。 |
例
次のobj.conf
コードは、URIの値に基づいてリクエストの優先順位を設定し、'/index.html'にHIGH、および'foo.html'.にLOWを設定します。
<Object name="default">AuthTrans fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true" <If $uri eq '/index.html'>AuthTrans fn="set-priority" priority="HIGH"</If> <If $uri eq '/foo.html'>AuthTrans fn="set-priority" priority="LOW"</If> ......Service fn="proxy-retrieve" method="*"AddLog fn="flex-log"</Object>
set-variable
関数では、リクエストの条件情報に基づいてOracle Traffic Directorの設定を変更できます。この関数は、すべてのディレクティブで使用できます。
これを使用して、次のコマンドによってパラメータ・ブロックの変数を操作することもできます。
insert-
pblock="
name=value"
指定されたpblockに新しい値を追加します。
set-
pblock="
name=value"
指定されたpblockに新しい値を設定し、既存の値を同じ名前で置き換えます。
remove-
pblock="
name"
指定されたpblockから特定の名前を持つすべての値を削除します。
set-variable
関数は、多くの事前定義変数をパラメータとして認識します。また、set-variable
のパラメータ名が$
で始まるが事前定義変数の名前ではない場合、パラメータとその値はrq->vars
pblockに格納されます。この機能により、リクエスト時に$variable
の値を定義またはオーバーライドできます。
set-variable
は、$variable
形式と${variable}
形式の両方を受け入れますが、rq->vars
pblockに格納されたパラメータの名前は、常に$variable
形式になります。
構文
stage fn="set-variable" [{insert|set|remove}
-
pblock=
"name=value" ...][
name="value" ]
パラメータ
次の表に、set-variable
関数のパラメータ値を示します。
表5-60 set-variableのパラメータ
値 | 説明 |
---|---|
pblock |
次のセッションまたはリクエスト・パラメータ・ブロック名のいずれかを指定します。
|
name |
設定する変数。 |
value |
nameで指定した変数に割り当てる文字列。 |
変数
次の表に、set-variable
SAFでサポートされる変数をリストします。
表5-61 サポートされる変数
変数 | 説明 |
---|---|
|
|
|
HTTPステータス・コードを設定し、 たとえば、次のコードは、 <Client code="302"> Output fn="set-variable" error="301 Moved Permanently" noaction="true" </Client> ブラウザ・リクエストが中断されたときに返すエラー・コードを設定します。 |
|
|
|
URIのファイル名に続くパス情報。 |
|
HTTPのバージョン番号(1.0など)。 |
|
HTTPのバージョン番号(1.0など)。 |
|
ブラウザからのキープ・アライブ・リクエストを受け入れるかどうかを決定するブール値。 |
|
このリクエストにディレクティブが適用される |
|
|
|
可能であれば、URLに対してサーバーが |
|
HTTPレスポンス・ヘッダーがクライアントに送信されたかどうかを示すブール値。 |
|
SSL3接続のクローズ方法を変更するために使用できるブール値。 注意: これはSSL3 RFCに違反しているため、SSL3の停止に関する問題が発生していることが確認できた場合にのみ、十分に注意してこれを使用してください。 |
|
|
|
リクエストを指定されたURLにリダイレクトします。 |
例
特定のサーバー・クラスに対するHTTPキープ・アライブ・リクエストを拒否しながら他のクラスに対するキープ・アライブ・リクエストは引き続き受け入れるには、次のAuthTrans
ディレクティブをサーバー・クラスのobj.conf
に追加して、変数keep-alive
をdisabled
に設定します。
AuthTrans fn="set-variable" keep-alive="disabled"
同じサーバー・クラスでHTTP/1.0を使用しながら残りのOracle Traffic DirectorクラスでHTTP/1.1を使用するように設定するには、AuthTrans
ディレクティブを次のように指定します。
AuthTrans fn="set-variable" keep-alive="disabled" http-downgrade="1.0"
HTTPヘッダーを各レスポンスに挿入するには、insert-
pblockコマンドを使用してNameTrans
ディレクティブをobj.conf
に追加し、セッションまたはリクエスト・パラメータ・ブロックとしてsrvhdrs
を指定します。
たとえば、HTTPヘッダーのP3P
を挿入するには、次の行を各リクエストに追加します。
NameTrans fn="set-variable" insert-srvhdrs="P3P"
特定のURIに基づいてリクエストの処理を終了するには、Client
タグを使用して、URIと、一致した場合に変数abort
をtrue
に設定するAuthTrans
ディレクティブを指定します。Client
タグは次のようになります。
<Client uri="*(system32|root.exe)*"> AuthTrans fn="set-variable" abort="true" </Client>
事前定義変数を使用して、Oracle Traffic Directorでホストbadnameへのリダイレクトをホストgoodnameへのリダイレクトにリライトするには、次のようにします。
<If $srvhdrs{'location'} =~ "^(http|https)://badname/(.*)$" Output fn="set-variable" $srvhdrs{'location'}="$1://goodname/$2" </If>
リクエスト時に$variable
の値を設定するには、次のようにします。
<If "$time_hour:$time_min" < "8:30" || "$time_hour:$time_min" > "17:00"> AuthTrans fn="set-variable" $docroot="/var/www/docs/closed" </If> ... NameTrans fn="document-root" root="$docroot"
$docroot
変数がserver.xml
で定義されているかどうかにかかわらず、Oracle Traffic Directorがローカル時間で午後5:00 - 午前8:00にアクセスされると、その値が/var/www/docs/closed
に設定されます。
この項では、次のフィルタについて説明します。
http-compression
フィルタは、発信コンテンツを圧縮します。クライアントが圧縮をサポートしていない場合、または発信コンテンツがすでに圧縮されている場合は、http-compression
は何も実行しません。
表5-62では、http-compression
フィルタのパラメータについて説明します。
表5-62 http-compressionのパラメータ
パラメータ | 説明 |
---|---|
フィルタが |
|
一度に圧縮する量を制御するために圧縮ライブラリが使用するメモリー・フラグメントのサイズ(バイト単位)です。デフォルト値は、8096です。 |
|
圧縮ライブラリが使用する圧縮レベルを制御します。有効な値は1から9です。値1は、最も速く圧縮できます。値9は、圧縮率が最も高くなります。デフォルト値は6です。 |
|
圧縮ライブラリの内部パラメータを制御します。有効な値は9から15です。値が大きくなるほど、メモリー使用量が増えて圧縮率はよくなります。デフォルト値は15です。 |
|
|
圧縮ライブラリが使用するメモリーの量を制御します。有効な値は1から9です。値1は、最小のメモリー量を使用しますが低速です。値9は、最適な速度になるよう最大のメモリー量を使用します。デフォルト値は8です。 |
例
Output fn="insert-filter" type="text/*" filter="http-compression" vary="on" compression-level="9"
この例では、type="text/*"
は、MIMEタイプのtext/*
(text/ascii
、text/css
、text/html
など)を持つドキュメントに圧縮を制限します。
または、次のようにClient
タグを使用して、圧縮コンテンツも扱うブラウザを明確に除外することもできます。
<Client match="none"\ browser="*MSIE [1-3]*"\ browser="*MSIE [1-5]*Mac*"\ browser="Mozilla/[1-4]*Nav*"> Output fn="insert-filter" filter="http-compression" type="text/*" </Client>
この例では、次のいずれでもないブラウザに圧縮を制限します。
バージョン4より前のInternet Explorer for Windows
バージョン6より前のInternet Explorer for Macintosh
バージョン6より前のNetscape Navigator/Communicator
バージョン4より前のInternet Explorer on Windowsは、圧縮データをリクエストすることがありますが、正しくサポートしていません。バージョン6より前のInternet Explorer on Macintoshも同様です。Netscape Communicatorバージョン4.xは、圧縮をリクエストしますが、正しく処理するのは圧縮されたHTMLのみです。圧縮されたHTMLからリンクされたCSSまたはJavaScriptは正しく処理されないため、管理者は、圧縮されたコンテンツがサーバーによってその(またはそれより前の)ブラウザに送信されないようにします。
sed-request
フィルタは、sed
編集コマンドを着信リクエストのエンティティ本文(アップロードされたファイルや送信されたフォームなど)に適用します。
表5-63では、sed-response
フィルタのパラメータについて説明します。
例
次のobj.conf
コードは、HTML形式でポストされた(<
)および(>
)の文字をエンコードすることをsed-requestに指示します。
Input fn="insert-filter" method="POST" filter="sed-request" sed="s/</\\</g" sed="s/%3c/\\</g" sed="s/%3C/\\</g" sed="s/>/\\>/g" sed="s/%3e/\\>/g" sed="s/%3E/\\>/g"
POST
本文は通常URLエンコードされるため、POST本文の編集時はURLエンコードされた形式をチェックすることが重要です。%3C
は(<
)のURLエンコードされた形式で、%3E
は(>
)のURIエンコードされた形式です。
sed-response
フィルタは、sed編集コマンドを発信レスポンスのエンティティ本文(HTMLファイルやサーブレットからの出力など)に適用します。
表5-64では、sed-request
フィルタのパラメータについて説明します。
例
次のobj.confコードは、HTMLレスポンス内のhttp://127.0.0.1/のオカレンスをhttp://server.example.com/にリライトすることをsed-responseに指示します。
Output fn="insert-filter" type="text/html" filter="sed-response" sed="s|http://127.0.0.1/|http://server.example.com/|g"