맵에 정의한 변수에 대해 잘못된 매개변수를 받는 이유는 무엇입니까?

맵에 정의한 변수에 대해 잘못된 매개변수를 받는 이유는 무엇입니까?

내 서버의 특정 도메인 이름에 대한 화이트리스트를 정의하려고 합니다. 나는 컨텍스트를 사용하여 이 작업을 수행하는 방법을 알아냈지만 이제 맵 컨텍스트에서 정의한 변수에 대한 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인수로만 허용합니다.지시 문서.

구성에서 항목은 지원되지 않는 도메인 이름입니다.

관련 정보