netscaler LBにおいてサーバを使わずにリダイレクトする
これは何
netscaler LBにおいて特定FQDNへのアクセスをパスそのままで他のFQDNにリダイレクトする方法についてまとめる。 この資料は NetScaler version 11.0 で実験した動きを元に書いています。
目次
参考資料
https://support.citrix.com/article/CTX120664 大体これを読めばできるが以下の問題があった(この資料を作るモティベーション)
- LoadBalancing Virtual Server の設定のところがServiceと書いてあり誤植と思われる
- 設定箇所の階層が書いておらず多少読みづらい
- LoadBalancing Virtual ServerにGlobal IPを設定するパターンしか書かれていない
手順
System設定でresponderの有効化
NetScaler -> System -> Settings -> Configure Acvanced Features
responder にチェックを入れる。
Responder Actionの設定をする
- Addする(既存のActionを選択してAddするとそれをテンプレートとして使うことになる。最初から作るなら選択を外してAddする)
- TypeはRedirectを選択
- Expression
例1) http->httpsにリダイレクトするなら、スキーマのところだけhttpsと書いて後は同じ
"https://" + HTTP.REQ.HOSTNAME.HTTP_URL_SAFE + HTTP.REQ.URL.PATH_AND_QUERY.HTTP_URL_SAFE
例2) 特定の別のドメインにリダイレクトする
"http://piyo.jp" + HTTP.REQ.URL.PATH_AND_QUERY.HTTP_URL_SAFE
補足: L7で http://hoge.jp/fuga などで入ってきたLoadBalancing Virtual Server経由でこのactionで http://piyo.jp/fuga に飛ばすイメージ
* Response Status Code を設定する デフォルト 302
Responder Policy の設定をする
- さっきのActionを設定する
- Undefined-Result ActionをRESETにする
- Expressionには HTTP.REQ.IS_VALID を設定(frequently Userd Expressionから選択すると良い)
- 要するにこのpolicyでは特に何もせずに(validかチェックだけして)actionへ流すという意味か
monitor 設定をする
localhost に pingをうつmonitor設定を作る
- name: localhost_ping
- Type: PING
- destination ip: 127.0.0.1
service を作る
上で作成したmonitorを使って常にserviceがUP状態になるようにする。あくまでダミーで、LoadBalancing Virtual Serverが常にUP状態になるようにするためのものの模様
- 上記serverを紐付ける
- ProtocolとPortはHTTPと80とでも適当に設定しておく
- 作成後、Monitoring設定で先程作成したmonitorを設定し、UP状態になることを確認する
LoadBalancing Virtual Serverを作る
- IP Address: WebサイトのIPアドレスもしくはPrivate IP
- Global IPで直接受ける場合にはここに設定
- Content Switching Virtual Server通すならここはPrivate IPを指定する
- 作成後Responder Policyを設定
Content Switching Virtual Server 設定
上記でLoadBalancing Virtual ServerにPrivate IPを設定した場合にはContent Switching Virtual Serverのpolicyに紐付ける この手順はredirector特有というよりもContent Switching Virtual ServerからLoadBalancing Virtual Serverに流す手順と同じなので省略する