评论

收藏

[Nginx] Nginx中IF、AND、OR语句用法实例

web服务器 web服务器 发布于:2021-08-22 22:29 | 阅读数:254 | 评论:0

在上一篇文章:《Nginx if语句加正则表达式实现字符串截断》中, 我们介绍过了使用if来进行截断字符串的用法, 这次我们来了解下if的逻辑用法:
什么是逻辑用法呢, 就程序中的and、or关系, 就叫做逻辑了.
NGINX支持if的 and 与 or 或者 && 与 || 吗?
答案是No.
当你尝试这样配置, 重载nginx时, nginx会报出错误
复制代码代码如下:
location = /test/ {
    default_type text/html;
    set $b 0;
    if ( $remote_addr != '' && $http_x_forwarded_for != '' ){
      set $b '1';
    }
    echo $b;
  }
[root@test-vm ~]# /usr/local/nginx/sbin/nginx -t
 
nginx: [emerg] invalid condition "$remote_addr" in /usr/local/nginx/conf/nginx.conf:60
configuration file /usr/local/nginx/conf/nginx.conf test failed
那么我们应该怎样来实现and 和or的逻辑关系呢?
复制代码代码如下:
location = /test_and/ {
    default_type text/html;
    set $a 0;
    set $b 0;
    if ( $remote_addr != '' ){
      set $a 1;
    }
    if ( $http_x_forwarded_for != '' ){
      set $a 1$a;
    }
    if ( $a = 11 ){
      set $b 1;
    }
    echo $b;
  }
  location = /test_or/ {
    default_type text/html;
    set $a 0;
    set $b 0;
    if ( $remote_addr != '' ){
      set $a 1;
    }
    if ( $http_x_forwarded_for != '' ){
      set $a 1;
    }
    if ( $a = 1 ){
      set $b 1;
    }
    echo $b;
  }
关注下面的标签,发现更多相似文章