リライト用の高度なポリシーのチュートリアル例
-
外部 URL を内部 URL にリダイレクトする
-
クエリのリダイレクト
-
HTTP から HTTPS への書き換え
-
不要なヘッダーの削除
-
Web サーバーのリダイレクトを減らす
-
サーバヘッダーのマスキング
-
プレーンテキストをURLエンコードされた文字列に変換し、反対の方法
外部 URL を内部 URL にリダイレクトする
CLI を使用して外部 URL を内部 URL にリダイレクトするには
-
書き換えアクションを作成するには、コマンドプロンプトで次のように入力します。
add rewrite action act_external_to_internal REPLACE “http.req.hostname.server” “\”host_name_of_internal_Web_server\””
-
書き換えポリシーを作成するには、NetScaler ADCコマンドプロンプトで次のように入力します。
add rewrite policy pol_external_to_internal "http.req.hostname.server.eq(\"host_name_of_external_Web_server\")" act_external_to_internal
-
ポリシーをグローバルにバインドします。
構成ユーティリティを使用して外部 URL を内部 URL にリダイレクトするには
-
ヘッダー名フィールドに「 Host」と入力します。
-
置換テキストフィールドの文字列式に、Web サーバーの内部ホスト名を入力します。
-
[Create] をクリックしてから、[Close] をクリックします。
-
「名前」フィールドに「pol_external_to_internal」と入力します。このポリシーは、Web サーバーへの接続を検出します。
-
エクスプレッションエディタで、次のエクスプレッションを作成します。
HTTP.REQ.HOSTNAME.SERVER.EQ("www.example.com")
-
新しいポリシーをグローバルにバインドします。
クエリのリダイレクト
**www.example.com**に設定された Host ヘッダーとstring /query.cgi?server=5という文字列の GET メソッドが含まれていることを前提としています。リダイレクトは、ホストヘッダーからドメイン名を、クエリ文字列から番号を抽出し、ユーザーのクエリをサーバー Web5.example.com にリダイレクトします。Web5.example.comでは、残りのユーザーのクエリが処理されます。
CLI を使用してクエリを適切な URL にリダイレクトするには
-
HTTP サーバのホスト名を内部サーバ名に置き換える act_redirect_query という名前の書き換えアクションを作成するには、次のように入力します。
add rewrite action act_redirect_query REPLACE http.req.header("Host").before_str(".example.com") '"Web" + http.req.url.query.value("server")'
-
pol_redirect_queryという名前の書き換えポリシーを作成するには、NetScaler ADCコマンドプロンプトで次のコマンドを入力します。このポリシーは、クエリ文字列を含む Web サーバーへの接続を検出します。このポリシーは、クエリ文字列を含まない接続には適用しないでください。
add rewrite policy pol_redirect_query 'http.req.header("Host").eq(www.example.com) && http.req.url.contains("?")' act_redirect_query
-
新しいポリシーをグローバルにバインドします。
HTTP から HTTPS への書き換え
CLI を使用して HTTP URL を HTTPS にリダイレクトするには
-
文字列「HTTP」のすべてのインスタンスを文字列「https」に置き換える act_replace_http_with_https という名前の書き換えアクションを作成するには、次のコマンドを入力します。
add rewrite action act_replace_http_with_https replace_all 'http.res.body(100)' '"https"' -search text("http")
-
Web サーバへの接続を検出する pol_replace_http_with_https という名前の書き換えポリシーを作成するには、次のコマンドを入力します。
add rewrite policy pol_replace_http_with_https TRUE act_replace_http_with_https NOREWRITE
-
新しいポリシーをグローバルにバインドします。
不要なヘッダーの削除
-
**エンコーディングヘッダーを受け入れます。**HTTP 応答から Accept Encoding ヘッダーを削除すると、応答の圧縮が防止されます。
-
**コンテンツの場所ヘッダー。**HTTP レスポンスから Content Location ヘッダーを削除すると、サーバーがセキュリティ侵害を許容する可能性のある情報をハッカーに提供することを防ぎます。
CLI を使用して適切な書き換えアクションを作成するには
-
add rewrite action "act_remove-ae" delete_http_header "Accept-Encoding" -
add rewrite action "act_remove-cl" delete_http_header "Content-Location"
CLI を使用して適切な書き換えポリシーを作成するには
-
add rewrite policy "pol_remove-ae" true "act_remove-ae" -
add rewrite policy "pol_remove-cl" true "act_remove-cl"
CLI を使用してポリシーをグローバルにバインドするには
-
bind rewrite global pol_remove_ae 100 -
bind rewrite global pol_remove_cl 200
Web サーバーのリダイレクトを減らす
CLI を使用してデフォルトのホームページを含めるようにディレクトリレベルの HTTP 要求を変更するには
-
スラッシュで終わる URL を変更して、デフォルトのホームページ index.html を含むように変更する action-default-homepage という名前の書き換えアクションを作成するには、次のように入力します。
add rewrite action "action-default-homepage" replace http.req.url.path "\"/index.html\""
-
ホームページへの接続を検出して新しいアクションを適用する policy-default-homepage という名前の書き換えポリシーを作成するには、次のように入力します。
add rewrite policy "policy-default-homepage" q#http.req.url.path.EQ("/") "action-default-homepage"#
-
新しいポリシーをグローバルにバインドして有効にします。
サーバヘッダーのマスキング
CLI からの応答で Server ヘッダーをマスクするには
-
Server ヘッダーの内容を無意味な文字列に置き換える act_mask-server という名前の書き換えアクションを作成するには、次のように入力します。
add rewrite action "act_mask-server" replace "http.RES.HEADER(\"Server\")" "\"Web Server 1.0\""
-
すべての接続を検出する pol_mask-server という名前の書き換えポリシーを作成するには、次のように入力します。
add rewrite policy "pol_mask-server" true "act_mask-server"
-
新しいポリシーをグローバルにバインドして有効にします。
プレーンテキストをURLエンコードされた文字列に変換する方法と反対の方法
-
URL_RESERVED_CHARS_SAFE(URLエンコードする文字列)。
("abc def&123").URL_RESERVED_CHARS_SAFE
Output will be
“abc%20def%26123” which is url encoded.
-
SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE. (URL を文字列にエンコード)
("abc%20def%26123").SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE
Output will be
“abc def&123”