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