我正在尝试为服务器上的某些域名定义白名单。我已经找到了一种使用上下文来实现这一点的方法map
,但现在我得到了一个invalid parameter "$whitelist"
在映射上下文中定义的变量。我之前已经尝试过这种方法,而且成功了,但现在我突然收到错误。不过我不确定为什么会这样。
map $http_host $whitelist {
default 0;
"~^(?<subdomain>\w+)\.(?<domain>domain-name\.example\.com)$" $domain;
# whitelist domains
whitelist1 example.com;
whitelist2 subdomain.example.com;
}
server {
listen 80;
resolver 127.0.0.11 ipv6=off;
proxy_intercept_errors on;
# error_page 400 403 = @fallback;
if ($whitelist = 0) {
return 403;
}
location /v1/ {
allow $whitelist;
deny all;
}
location @fallback {
return 400;
}
答案1
allow
指令仅接受 IP 地址、CIDR 范围unix:
或all
作为参数,如指令性文件。
在您的配置中,条目是域名,不受支持。