![nginx:[emerg]此处不允许使用“if”指令](https://linux22.com/image/734149/nginx%EF%BC%9A%5Bemerg%5D%E6%AD%A4%E5%A4%84%E4%B8%8D%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8%E2%80%9Cif%E2%80%9D%E6%8C%87%E4%BB%A4.png)
你能帮我吗?我正在尝试阻止我域外的所有请求,并在存在指定参数时允许该请求
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;
}