【Nginx】配置实现多重if判断
nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:
首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:
# 要实现的语句 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; }
原文:http://www.ifunsion.com/archives/2529
标签: Nginx
还没有人抢沙发呢~