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/;
        ...
    }
    ...
}

관련 정보