天空小小岛技术论坛

 找回密码
 注册
搜索
查看: 11880|回复: 0

Nginx中if条件的逻辑与和逻辑或实现多重条件判断的方法

[复制链接]
一粒米 发表于 2013-11-29 14:51:31 | 显示全部楼层 |阅读模式
Nginx的配置中不支持if条件的逻辑与逻辑或运算,并且不支持if的嵌套语法,我们可以用变量的方式来实现

首先以下是伪代码(即Nginx不支持的写法),写在这里只是为了方便理解
  1. if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {
  2.     return 403;
  3. }
复制代码


以下是可用的配置
  1. set $flag 0;
  2. if ($remote_addr ~ "^(12.34|56.78)") {
  3.     set $flag "${flag}1";
  4. }
  5. if ($http_user_agent ~* "spider") {
  6.     set $flag "${flag}2";
  7. }
  8. if ($flag = "012") {
  9.     return 403;
  10. }
复制代码


逻辑或 更简单一点,试着写一下吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天空小小岛 ( 京ICP备17043412号-1|

GMT+8, 2018-11-14 00:53 , Processed in 0.103573 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表