你能帮我吗?我正在尝试阻止我域外的所有请求,并在存在指定参数时允许该请求
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;
}