
Я пытаюсь определить белый список для определенных доменных имен на моем сервере. Я нашел способ сделать это с помощью контекста 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
в качестве аргумента, как описано вдирективная документация.
В вашей конфигурации записи представляют собой доменные имена, которые не поддерживаются.