有些公司可能有這樣的需求,如:我的網(wǎng)站或者網(wǎng)頁游戲需要更新,所有的用戶或者玩家訪問到的是一個停服更新頁面,而本公司的IP可以訪問,甚至說本公司的某個內(nèi)網(wǎng)IP可以訪問,用于確認更新成功與否,針對這個問題寫了如下的訪問控制規(guī)則:
Nginx多重條件判斷(只是一個簡單的例子,自己可以更改或者增加更多的判斷條件),下面是兩個例子和寫法: 1、可以作為nginx的停服更新使用,僅允許222.222.222.222或者內(nèi)網(wǎng)的兩個IP訪問,其他IP都rewrite到停服頁面 Nginx.conf中加入在你項目的正確位置
2、訪問某個php應(yīng)用的時候我只想讓內(nèi)部的某個IP訪問,其他的IP都轉(zhuǎn)到另一個PHP上。如下: 訪問test.php,且IP不等222.222.222.222的跳轉(zhuǎn)到55555.php:
nginx中if判斷實現(xiàn)多重判斷 二 if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") { return 403; } set $flag 0; if ($remote_addr ~ "^(12.34|56.78)") { set $flag "${flag}1"; } if ($http_user_agent ~* "spider") { set $flag "${flag}2"; } if ($flag = "012") { return 403; } if ($request_uri ~ "xxx.php?xxx") { set $iftmp Y; } if ($http_user_agent ~ "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)") { set $iftmp "${iftmp}Y"; } if ($iftmp = YY) { return 400;} location / { proxy_pass https://172.0.0.11; } 重點一 set $iftmp Y 將iftmp設(shè)置為Y,set命令是一個大大的亮點 重點二 還是set部分set $iftmp "${iftmp}Y" 在set里面 ${iftmp}Y將參數(shù)疊加一次,${iftmp}是一個大大的亮點. $request_uri是客戶端請求的完整請求路徑,$http_user_agent是用戶端發(fā)出請求的瀏覽器參數(shù). |
|