tengine 指定某一組頁面 不允許境外訪問

目標 : 85521A 這本刊 不允許境外訪問
特徵: 經過分析 該刊的所有url 均爲
http://xxxxx /journal/xxxx.aspx?xxx=85521A&xxxxx
也就是說, 特徵爲 $args ~ .85521A.
實現方法: geoIP
判斷條件1: $args ~
.85521A.
判斷條件2:$geoip_country_code != CN
經過測試 nginx 的if 不能 and or 等邏輯操作;並且 nginx if 不能嵌套
因此 採用的方法是 設置一個變量 比如$block,
先賦值給 $block deny
然後判斷條件1 真的話 重新賦值 $block 爲${flag}un
然後判斷條件2 真的話 再重新賦值 $block 爲${block}cn
那麼 如果2個條件都滿足的話 $block 爲 denyuncn
只滿足其中一個的話 $block 就是 denycn 或者 denyun
最後 判斷 如果 $block 爲denyuncn 那麼就不允許訪問
則實現目標

....
location xxxx{
........
set $block 'deny';
if ($args ~ .85521A.* ) {
set $block "${block}un";
}
if ($geoip_country_code != CN){
set $block "${block}cn";
}
if ($block = 'denyuncn'){
add_header Content-Type "text/plain;charset=utf-8";
return 200 "You do not have access this resure in your country ";
}
}
........

本文未闡述如何在tengine中編譯geo模塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章