nginx映射變數不能當作上游哈希鍵?

nginx映射變數不能當作上游哈希鍵?

我想使用 uri 的一部分作為上游哈希鍵,配置如下:


map $uri $dir {
     ~^/(.*?)/ $1;
}

upstream backServer {
    server 172.10.27.223:80;
    server 172.10.27.161:80;
    hash $dir consistent;
}

server {
    listen 80;
    location / {
        proxy_pass http://backServer;
    }
}

但這不起作用,請求只發送到第一個伺服器,而不考慮uri。我也嘗試像這樣的哈希哈希 $dir 一致,此配置效果正確。

我該如何配置nignx?

答案1

您的配置中可能存在一些錯誤,因為這是有效的:

map $uri $hashtest {
  "~^(.*)/" "$1";
}

upstream nodeServers {
   server 192.168.1.3:8888;
   server 192.168.1.3:8889;
   hash $hashtest consistent;
}

server {
    ...
    location /xyz/ {
        proxy_pass http://nodeServers/;
        ...
    }
    ...
}

相關內容