
我正在嘗試為我的伺服器上的某些網域定義白名單。我已經找到了一種使用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
作為參數,如中所述指令檔。
在您的配置中,條目是域名,不受支援。