我想使用 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/;
...
}
...
}