nginx:[emerg]此处不允许使用“if”指令

nginx:[emerg]此处不允许使用“if”指令

你能帮我吗?我正在尝试阻止我域外的所有请求,并在存在指定参数时允许该请求

location ~* \.(mp4|vtt|mp3|mkv|avi)$ {
        if ( $http_referer !~* 'mywebsite.com' ) { # check http_referer
               if ($arg_78up = '') { #check if parameter 78up is empty
                        return 404; # then redirect to 404 page
               }
        }
}

当 nginx 启动时出现此错误:

nginx: [emerg] "if" directive is not allowed here in /etc/nginx/sites-enabled/default:17

我该怎么做才能解决这个问题?谢谢!

答案1

nginx 不允许嵌套if语句。您需要使用map功能来实现您的目标。

http关卡中,添加地图:

map "$http_referer:$arg_78up" $refernotok {
    default 1;
    ~ mywebsite.com.*:.*$ 0;
    ~ ^.+:.+$ 0;
}

if ($refernotok = "1") {
    return 404;
}

相关内容