有些公司可能有这样的需求,如:我的网站或者网页游戏需要更新,所有的用户或者玩家访问到的是一个停服更新页面,而本公司的IP可以访问,甚至说本公司的某个内网IP可以访问,用于确认更新成功与否,针对这个问题写了如下的访问控制规则:
Nginx多重条件判断(只是一个简单的例子,自己可以更改或者增加更多的判断条件),下面是两个例子和写法: 1、可以作为nginx的停服更新使用,仅允许222.222.222.222或者内网的两个IP访问,其他IP都rewrite到停服页面 Nginx.conf中加入在你项目的正确位置
2、访问某个php应用的时候我只想让内部的某个IP访问,其他的IP都转到另一个PHP上。如下: 访问test.php,且IP不等222.222.222.222的跳转到55555.php:
nginx中if判断实现多重判断 二 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设置为Y,set命令是一个大大的亮点 重点二 还是set部分set $iftmp "${iftmp}Y" 在set里面 ${iftmp}Y将参数叠加一次,${iftmp}是一个大大的亮点. $request_uri是客户端请求的完整请求路径,$http_user_agent是用户端发出请求的浏览器参数. |
|