マップ内で定義した変数に無効なパラメーターが設定される理由は何ですか?

マップ内で定義した変数に無効なパラメーターが設定される理由は何ですか?

サーバー上の特定のドメイン名のホワイトリストを定義しようとしています。コンテキストを使用してこれを行う方法を見つけました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引数としてのみ受け入れます。指令文書

設定ではエントリはドメイン名ですが、これはサポートされていません。

関連情報