有需求一个系统只允许微信和钉钉访问,所以配置Nginx规则过滤UA
配置文件
server {
listen 80;
server_name localhost;
set $flag 0;
if ($http_user_agent !~ "MicroMessenger" ){
set $flag "${flag}1";
}
if ( $http_user_agent !~ "DingTalk" ){
set $flag "${flag}2";
}
if ($flag = "012") {
return 403;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
踩过的坑
一. Nginx多条件判断
问题
nginx的配置中不支持if条件的逻辑与、逻辑或运算 ,并且不支持if的嵌套语法*
解法
定义变量,判断变量状态。