Netscaler Callout策略-實現外部聯動
在某些特殊的場景下,須要Netscaler與外部服務實現聯動來做出複雜情景下的判斷。例如在作LLB時經過外部數據庫來判斷URL是否安全,判斷源地址是否合法(這裏只是舉例,用在客戶非要用本身運維的內容歸類服務器或不想買企業版NS時。NS內置功能能夠作IP和各類惡意URL的判斷)此時就須要祭出Callout這個神器了,下面就是一個配置案例。
配置意圖:
Netscaler判斷客戶端的地址是否合法,若是不合法的地址就跳轉到特定的頁面。可是這個判斷是否合法的動做是有外部服務器來完成的,Netcaler把客戶端的地址插入http body送到外部服務器,根據判斷的結果來決定用戶是否有權訪問頁面。
業務邏輯:
client->NS responder policy調用callout->third server->NS responder engine->serverweb
啓用callout前先啓用responder的Feature數據庫
編輯callout 策略
add policy httpCallout my_callout 安全
set policy httpCallout my_callout -IPAddress 192.168.150.18 -port 80 -returnType TEXT -httpMethod POST -hostExpr 192.168.150.18 -urlStemExpr "\"/callout/calloutweb.htm\"" -headers test_header("cj_header") -parameters test_parameter("cj_parameter") -scheme http -resultExpr "HTTP.RES.BODY(600000)"服務器
其中parameter的做用跟http method有關係,get的話parameter變爲?帶參數,post的話parameter就變成編碼後的data內容了
get 方法抓包驗證:運維
post方法抓包驗證
ide
將callout策略在responder策略中調用
add responder policy res_policy_callout "SYS.HTTP_CALLOUT(my_callout).CONTAINS(\"The address is valid\")" res_action_callout
post
callout服務器返回值
服務器返回當前客戶端地址是非法地址
用該地址訪問LB vserver時就會被重置或重定向到其餘頁面。驗證客戶端效果,看不到主頁直接被responder了。編碼