跳至主要內容

核心指令if

刘春龙原创...大约 1 分钟LinuxNginxWEB服务器教程文档

该指令用来支持条件判断,并根据条件判断结果选择不同的 Nginx 配置,可以在 server 块或 locatio 块中配置该指令。
语法结构: if (condition) { ... }

其中,花括号代表一个作用域,形成一个 if 配置块,是条件为真时的 Nginx 配置。condition 为判断条件( true/false ),它可以支持以下几种设置方法:

  • 变量名-如果变量的值为空字符串或者“0”开头的任意字符串,if 指令认为条件为 false,其他情况为 true,比如:

    if ($slow) {
    .....   #Nginx配置
    }
    
  • 使用 "="(等于) 和 "!=" (不等于) 比较变量和字符串是否相等,相等时 if 指令为条件为 true,反之为 false。

    if ($request_method = POST) {
    return 405;
    }
    

变量与正则表达式

~ 表示匹配过程对大小写敏感
~* 表示匹配过程对大小写不敏感
!~ 表示匹配失败是 if 指令认为条件为 true 否则为 false

if ($http_user_agent  ~  MSIE) {
  # $http_user_agent 的值中是否包含MSIE字符串,如果包含,为   true
}

使用

server {
        listen       80;
        server_name  localhost;
        location / {
            if ($remote_addr = "192.168.0.128"){
              return https://qq.com;
            }
            if ($http_user_agent ~ Chrome){
              return https://baidu.com;
            }
            return https://mi.com;
        }

}

判断 ip 地址是否为192.168.66.10,如果是跳转到 https://qq.com
如果是谷歌浏览器访问就跳转到 https://baidu.com
如果都不是就跳转到 https://mi.com

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7