¿La variable de mapa nginx no puede ser una clave hash ascendente?

¿La variable de mapa nginx no puede ser una clave hash ascendente?

Quiero usar parte de uri como clave hash ascendente, la configuración es la siguiente:


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

Pero esto no tiene efecto, la solicitud solo se envía al primer servidor, independientemente del uri. Y también pruebo el hash comohash $dir consistente, esa configuración tiene el efecto correcto.

¿Cómo puedo configurar nignx?

Respuesta1

Puede haber un par de errores en tu configuración, ya que esto funciona:

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

información relacionada