この章では、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"