高度なポリシー式とポリシーの概要例
次の表に、独自の高度なポリシー式の基礎として使用できる高度なポリシー式の例を示します。
表1. 高度なポリシー式の例
エクスプレッションタイプ | サンプル式 |
---|---|
HTTP リクエストで使用されているメソッドを見てください。 | http.req.method.eq(post) http.req.method.eq(get) |
HTTP リクエスト (req) またはレスポンス (res) の Cache-Control または Pragma ヘッダー値を確認します。 |
http.req.header("Cache-Control").contains("no-store") http.req.header("Cache-Control").contains("no-cache") http.req.header("Pragma").contains("no-cache") http.res.header("Cache-Control").contains("private") http.res.header("Cache-Control").contains("public") http.res.header("Cache-Control").contains("must-revalidate")http.res.header("Cache-Control").contains ("proxy-revalidate") http.res.header("Cache-Control").contains("max-age")
|
要求 (req) または応答 (res) にヘッダーが存在するかどうかを確認します。 | http.req.header("myHeader").exists http.res.header("myHeader").exists |
ファイル拡張子に基づいて HTTP リクエストで特定のファイルタイプを探します。 | http.req.url.contains(".html") http.req.url.contains(".cgi")http.req.url.contains(".asp") http.req.url.contains(".exe") http.req.url.contains(".cfm") http.req.url.contains(".ex") http.req.url.contains(".shtml") http.req.url.contains(".htx") http.req.url.contains("/cgi-bin/") http.req.url.contains("/exec/") http.req.url.contains("/bin/") |
HTTP リクエストで特定のファイルタイプ以外のものを探します。 | http.req.url.contains(".gif").not; http.req.url.contains(".jpeg").not |
Content-Type ヘッダーに基づいて、HTTP 応答で送信されるファイルのタイプを確認します。 | http.res.header("Content-Type").contains("text") http.res.header("Content-Type").contains "application/msword") http.res.header("Content-Type").contains("vnd.ms-excel") http.res.header("Content-Type").contains("application/vnd.ms-powerpoint"); http.res.header("Content-Type").contains("text/css"); http.res.header("Content-Type").contains("text/xml"); http.res.header("Content-Type").contains("image/") |
この応答に有効期限ヘッダーが含まれているかどうかを確認します。 | http.res.header("Expires").exists |
レスポンスで Set-Cookie ヘッダーを確認します。 | http.res.header("Set-Cookie").exists |
応答を送信したエージェントを確認します。 | http.res.header("User-Agent").contains("Mozilla/4.7") http.res.header("User-Agent").contains("MSIE") |
リクエストの本文の最初の 1024 バイトが文字列「some text」で始まるかどうかを確認します。 | http.req.body(1024).contains("some text") |
次の表に、一般的に使用される関数のポリシー設定とバインディングの例を示します。
表2. 高度なポリシー式とポリシーの例
目的 | 例 |
---|---|
書き換え機能を使用して、HTTPレスポンスの本文のhttp:// with https:// のオカランスを置き換えます。 |
add rewrite action httpRewriteAction replace_all http.res.body(50000) "\"https://\"" -search http:// add rewrite policy demo_rep34312 "http.res.body(50000).contains(\"http://\")" httpRewriteAction |
HTTP 本文の最初の 1000 バイトの「abcd」のすべての出現箇所を”1234” に置き換えます。 | add rewrite action abcdTo1234Action replace_all "http.req.body(1000)" "\"1234\"" -search abcd add rewrite policy abcdTo1234Policy "http.req.body(1000).contains(\"abcd\")" abcdTo1234Action bind rewrite global abcdTo1234Policy 100 END -type REQ_OVERRIDE |
HTTP バージョンを 1.0 にダウングレードして、サーバーが HTTP 応答をチャンクしないようにします。 | add rewrite action downgradeTo1.0Action replace http.req.version.minor "\"0\"" add rewrite policy downgradeTo1.0Policy "http.req.version.minor.eq(1)" downgradeTo1.0Action bind lb vserver myLBVserver -policyName downgradeTo1.0Policy -priority 100 -gotoPriorityExpression NEXT -type REQUEST |
すべての応答で HTTP または HTTPS プロトコルへの参照を削除します。これにより、ユーザーの接続が HTTP の場合はリンクが HTTP を使用して開かれ、ユーザーの接続が HTTPS の場合は HTTPS を使用してリンクが開かれます。 | add rewrite action remove_http_https replace_all "http.res.body(1000000).set_text_mode(ignorecase)" "\"//\"" -search "re~https?://|HTTPS?://~" add rewrite policy remove_http_https true remove_http_https bind lb vserver test_vsvr -policyName remove_http_https -priority 20 -gotoPriorityExpression NEXT -type RESPONSE |
すべての URL の http: のインスタンスを https: に書き換えます。 | add responder action httpToHttpsAction redirect "\"https://\" + http.req.hostname + http.req.url" add responder policy httpToHttpsPolicy "!CLIENT.SSL.IS_SSL" httpToHttpsAction bind responder global httpToHttpsPolicy 1 END -type OVERRIDE |
URL A から URL B にリダイレクトするように URL を変更します。この例では、パスに「file5.html」が追加されます。 | add responder action appendFile5Action redirect \"http://\" + http.req.hostname + http.req.url + \"/file5.html\"" add responder policy appendFile5Policy "http.req.url.eq(\"/testsite\")" appendFile5Action bind responder global appendFile5Policy 1 END -type OVERRIDE |
外部 URL を内部 URL にリダイレクトします。 | add rewrite action act_external_to_internal REPLACE 'http.req.hostname.server' '"www.my.host.com"' add rewrite policy pol_external_to_internal 'http.req.hostname.server.eq("www.external.host.com")' act_external_to_internal bind rewrite global pol_external_to_internal 100 END -type REQ_OVERRIDE |
クエリ文字列を持つリクエストを www.webn.example.com にリダイレクトします。値 n は、クエリ文字列のサーバーパラメータ (server=5 など) から派生します。 | add rewrite action act_redirect_query REPLACE q#http.req.header("Host").before_str(".example.com")' '"Web" + http.req.url.query.value("server")# add rewrite policy pol_redirect_query q#http.req.header("Host").eq("www.example.com") && http.req.url.contains("?")' act_redirect_query# |
URL からの 1 秒あたりのリクエスト数を制限します。 | add ns limitSelector ip_limit_selector http.req.url "client.ip.src" add ns limitIdentifier ip_limit_identifier -threshold 4 -timeSlice 3600 -mode request_rate -limitType smooth -selectorName ip_limit_selector add responder action my_Web_site_redirect_action redirect "\"http://www.mycompany.com/\"" add responder policy ip_limit_responder_policy "http.req.url.contains(\"myasp.asp\") && sys.check_limit (\"ip_limit_identifier\")" my_Web_site_redirect_action bind responder global ip_limit_responder_policy 100 END -type default |
クライアントの IP アドレスを確認しますが、要求を変更せずに要求を渡します。 | add rewrite policy check_client_ip_policy 'HTTP.REQ.HEADER ("x-forwarded-for").EXISTS HTTP.REQ.HEADER ("client-ip").EXISTS' NOREWRITE bind rewrite global check_client_ip_policy 100 END |
リクエストから古いヘッダーを削除し、NS-Client ヘッダーを挿入します。 | add rewrite action del_x_forwarded_for delete_http_header x-forwarded-for add rewrite action del_client_ip delete_http_header client-ip add rewrite policy check_x_forwarded_for_policy 'HTTP.REQ.HEADER("x-forwarded-for").EXISTS' del_x_forwarded_for add rewrite policy check_client_ip_policy 'HTTP.REQ.HEADER("client-ip").EXISTS' del_client_ip add rewrite action insert_ns_client_header insert_http_header NS-Client 'CLIENT.IP.SRC' add rewrite policy insert_ns_client_policy 'HTTP.REQ.HEADER("x-forwarded-for").EXISTS HTTP.REQ.HEADER("client-ip").EXISTS' insert_ns_client_header bind rewrite global check_x_forwarded_for_policy 100 200 bind rewrite global check_client_ip_policy 200 300 bind rewrite global insert_ns_client_policy 300 END |
要求から古いヘッダーを削除し、NS-Clientヘッダーを挿入し、挿入されたヘッダーの値に古いヘッダーのクライアントIP値とNetScaler ADCアプライアンスの接続IPアドレスが含まれるように、「ヘッダーの挿入」アクションを変更します。この例では、最後のセット書き換えアクションを除いて、前の例を繰り返していることに注意してください。 |
高度なポリシー式とポリシーの概要例 |
次の表に、独自の高度なポリシー式の基礎として使用できる高度なポリシー式の例を示します。
表1. 高度なポリシー式の例
エクスプレッションタイプ | サンプル式 |
---|---|
HTTP リクエストで使用されているメソッドを見てください。 | <!JEKYLL@5140@0> |
HTTP リクエスト (req) またはレスポンス (res) の Cache-Control または Pragma ヘッダー値を確認します。 | <!JEKYLL@5140@1> <!JEKYLL@5140@2> <!JEKYLL@5140@3> <!JEKYLL@5140@4> <!JEKYLL@5140@5> <!JEKYLL@5140@6> <!JEKYLL@5140@7> |
要求 (req) または応答 (res) にヘッダーが存在するかどうかを確認します。 | <!JEKYLL@5140@8> |
ファイル拡張子に基づいて HTTP リクエストで特定のファイルタイプを探します。 | <!JEKYLL@5140@9> |
HTTP リクエストで特定のファイルタイプ以外のものを探します。 | <!JEKYLL@5140@10> |
Content-Type ヘッダーに基づいて、HTTP 応答で送信されるファイルのタイプを確認します。 | <!JEKYLL@5140@11> |
この応答に有効期限ヘッダーが含まれているかどうかを確認します。 | <!JEKYLL@5140@12> |
レスポンスで Set-Cookie ヘッダーを確認します。 | <!JEKYLL@5140@13> |
応答を送信したエージェントを確認します。 | <!JEKYLL@5140@14> |
リクエストの本文の最初の 1024 バイトが文字列「some text」で始まるかどうかを確認します。 | <!JEKYLL@5140@15> |
次の表に、一般的に使用される関数のポリシー設定とバインディングの例を示します。
表2. 高度なポリシー式とポリシーの例
目的 | 例 |
---|---|
書き換え機能を使用して、HTTPレスポンスの本文の<!JEKYLL@5140@16>のオカランスを置き換えます。 | <!JEKYLL@5140@17> |
HTTP 本文の最初の 1000 バイトの「abcd」のすべての出現箇所を”1234” に置き換えます。 | <!JEKYLL@5140@18> |
HTTP バージョンを 1.0 にダウングレードして、サーバーが HTTP 応答をチャンクしないようにします。 | <!JEKYLL@5140@19> |
すべての応答で HTTP または HTTPS プロトコルへの参照を削除します。これにより、ユーザーの接続が HTTP の場合はリンクが HTTP を使用して開かれ、ユーザーの接続が HTTPS の場合は HTTPS を使用してリンクが開かれます。 | <!JEKYLL@5140@20> |
すべての URL の http: のインスタンスを https: に書き換えます。 | <!JEKYLL@5140@21> |
URL A から URL B にリダイレクトするように URL を変更します。この例では、パスに「file5.html」が追加されます。 | <!JEKYLL@5140@22> |
外部 URL を内部 URL にリダイレクトします。 | <!JEKYLL@5140@23> |
クエリ文字列を持つリクエストを www.webn.example.com にリダイレクトします。値 n は、クエリ文字列のサーバーパラメータ (server=5 など) から派生します。 | <!JEKYLL@5140@24> |
URL からの 1 秒あたりのリクエスト数を制限します。 | <!JEKYLL@5140@25> |
クライアントの IP アドレスを確認しますが、要求を変更せずに要求を渡します。 | <!JEKYLL@5140@26> |
リクエストから古いヘッダーを削除し、NS-Client ヘッダーを挿入します。 | <!JEKYLL@5140@27> |
add rewrite action del_x_forwarded_for delete_http_header x-forwarded-for add rewrite action del_client_ip delete_http_header client-ip add rewrite policy check_x_forwarded_for_policy ‘HTTP.REQ.HEADER(“x-forwarded-for”).EXISTS’ del_x_forwarded_for add rewrite policy check_client_ip_policy ‘HTTP.REQ.HEADER(“client-ip”).EXISTS’ del_client_ip add rewrite action insert_ns_client_header insert_http_header NS-Client ‘CLIENT.IP.SRC’ add rewrite policy insert_ns_client_policy ‘HTTP.REQ.HEADER(“x-forwarded-for”).EXISTS HTTP.REQ.HEADER(“client-ip”).EXISTS’ insert_ns_client_header bind rewrite global check_x_forwarded_for_policy 100 200 bind rewrite global check_client_ip_policy 200 300 bind rewrite global insert_ns_client_policy 300 END set rewrite action insert_ns_client_header -stringBuilderExpr ‘HTTP.REQ.HEADER(“x-forwarded-for”).VALUE(0) + “ “ + HTTP.REQ.HEADER(“client-ip”).VALUE(0) + “ “ + CLIENT.IP.SRC’ |
高度なポリシー式とポリシーの概要例
コピー完了
コピー失敗