Nnginx mapeia URLs para proxy_pass em uma diretiva de localização

Nnginx mapeia URLs para proxy_pass em uma diretiva de localização

Tenho vários websockets de nós disponíveis por meio de um URL que corresponde aos caminhos do soquete UNIX. Em vez de duplicar a diretiva location, gostaria de ter algo como uma lista de URLs que serão usados ​​como nome de soquete. Usar uma regex não funciona, pois preciso do caminho para o nome do soquete.

Atualmente estou usando este local:

location /application1/
{
   proxy_pass http://unix:/var/run/nodejs/application1;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

o objetivo é ter algo como:

$list = [app1, app2, app3];           #list of possible names
location /$list/   #match all names in the list
{
   proxy_pass http://unix:/var/run/nodejs/$list_matched;   #use matched name
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

Basicamente, cada URL em uma lista deve ser redirecionada para o soquete com o mesmo nome.

Agradecemos antecipadamente por qualquer ajuda :)

Responder1

location ~* /(<regexp>)/ {
    proxy_pass http://unix:/var/run/nodejs/$1;   #use matched name
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Responder2

Você precisa usar uma expressão regular. Algo assim deve funcionar, mas você mesmo terá que descobrir a expressão regular. Existem muitos tutoriais esites de experimentação de expressões regulares.

location ~ (app1|app2|app3)$ {

informação relacionada