目标 : 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子產品