Почему я получаю недопустимый параметр для переменной, определенной в карте?

Почему я получаю недопустимый параметр для переменной, определенной в карте?

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

В вашей конфигурации записи представляют собой доменные имена, которые не поддерживаются.

Связанный контент