¿Por qué obtengo un parámetro no válido para una variable que definí en el mapa?

¿Por qué obtengo un parámetro no válido para una variable que definí en el mapa?

Estoy intentando definir una lista blanca para ciertos nombres de dominio en mi servidor. Descubrí una manera de hacer esto usando el mapcontexto, pero ahora obtengo invalid parameter "$whitelist"una variable que definí en el contexto del mapa. Ya probé este método antes y funcionó, pero ahora de repente aparece un error. Aunque no estoy seguro de por qué es así.

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;
}

Respuesta1

allowLa directiva acepta solo direcciones IP, rangos CIDR unix:o allcomo argumento, como se documenta endocumentación directiva.

En su configuración, las entradas son nombres de dominio, que no son compatibles.

información relacionada