為什麼我在映射中定義的變數得到無效參數?

為什麼我在映射中定義的變數得到無效參數?

我正在嘗試為我的伺服器上的某些網域定義白名單。我已經找到了一種使用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作為參數,如中所述指令檔

在您的配置中,條目是域名,不受支援。

相關內容