Nginx 实现逻辑运算符 与 或

需求

需要判断1. 来源IP 2. HTTP请求是否是GET请求。Nginx本身的If做不到逻辑判断,因此需要其他方式实现逻辑运算符

方法

通过Nginx的set 变量设置表标示,通过标示组合完成逻辑判断

配置
    server {

        listen 8088;
        # server_name localhost;
        location / {
                set $a 0;
                set $reqget 0;
                set $andor 00;
 
                if ($remote_addr ~* "xx.xx.xx.xx"){
                        set $a 1;
                }

                if ($request_method ~* GET){
                        set $andor  1$a;
                }
                if ($request_method !~* GET){
                        set $andor  0$a;
                }
                # a || reqget (或)
                if ( $andor = 10 ){
                        proxy_pass http://127.0.0.1:8089;
                }
                if ( $andor = 11 ){
                        proxy_pass http://127.0.0.1:8089;
                }
                if ( $andor = 01 ){
                        proxy_pass http://127.0.0.1:8089;
                }
                # ! (a||reqget) (非或)
                if ( $andor = 00 ){
                        return 403;
                }

        }
    }

你可能感兴趣的:(dev,linux,nginx,linux)