nginx下或(or)和与(and)运算,常用案例解析!


概述:  使用过nginx的伙伴应该都知道,nginx本身默认是不支持或(or)和与(and)运算的,也就是&& 或者 |  等这样的方式都不能直接使用, 但不支持并不代表不能实现,本文中就来介绍在nginx下如何实现或运算和与运算。

案例1 、【与运算】,有些时候,我们项目中突然更换了域名,但老域名还是需要能提供访问,或者一个项目需要有多个域名可以访问,但最终效果我们都希望是跳转到一个域名在访问,因为会涉及ssl证书的问题,那么这个时候我们就需要针对域名做判断,这其中还会涉及到http与https的问题,我们需要做【与运算】。


        set $req a;
        if ( $host !~ "www.xinyuer.cn" ) {
                set $req "${req}b";
        }
        if ( $scheme ~ https ) {
                set $req "${req}c";
        }
        if ( $req = abc ) {
                rewrite ^/(.*) https://www.xinyuer.cn/$1 permanent;
        }

        #以下这条规则实现非指定域名统一跳转
        if ( $host !~ "www.xinyuer.cn" ) {
                rewrite ^/(.*) https://www.xinyuer.cn/$1 permanent;
        }

案例2、 【或运算】 , 这是在gitlab下http访问方式的一个限制测试,充分利用gitlab的http验证方式,限制gitlab的资源权限管理,下面来看看与运算的实现。

  #定义访问用户
        set $i a;
        if ( $remote_user ~* "user01" ) {
           set $i "${i}b";
           set $i "${i}b2";
         }
         if ( $remote_user ~* "user02" ) {
            set $i "${i}b3";
         }
         if ( $remote_user ~* "user03" ) {
            set $i "${i}b4";
         }         }

  #定义访问的项目
         if ( $filtered_request_uri ~* "prd01" ) {
                       set $i "${i}c";
         }
         if ( $filtered_request_uri ~* "prd02" ) {
                       set $i "${i}d";
         }
         if ( $filtered_request_uri ~* "prd03" ) {
                       set $i "${i}e";
         }
         if ( $filtered_request_uri ~* "prd04" ) {
                       set $i "${i}f";
         }

#最终的执行动作
         if ( $i ~* "ab(c|d|e|f)" ) {
            return 503;
         }
         if ( $i ~* "ab2(d|e|f)" ) {
            return 403;
         }
         if ( $i ~* "ab3(c|d|e|f)" ) {
             return 503;
         }
         if ( $i ~* "ab4(c|d|e|f)" ) {
             return 403;
         }

总结: 通过上面的案例我们可以发现,其实在nginx上实现或和与运算并不复杂,以上或(or)和与(and)运算在nginx的实现仅提供参考和思路,具体环境中,可以进行变化,欢迎留言。









本文标签: nginx 或(or) 与(and) 运算

内容版权声明:【蓝色网居】部分资源来源于网络,如有侵犯您的所有权,请随时告知我们,我们将立即删除!感谢配合!

转载请注明出处:https://blog.ff56.cn/web/1657865241.html


【手机扫一扫查看文本】

手机扫一扫 手机扫一扫查看文本 手机扫一扫





案例分析 后台管理 域名 错误页 cookie 错误日志 接口请求 404自定义 跳转 tcp代理 统计 ip白名单 $http_host 请求频率 ngx_cache_pu 编译安装 404 lua referer限制 定义404跳转 模糊匹配 参数重写 或(or) $server_name 自启动 nginx nginx插件 防IP 防IP恶意 重写