
Tengo varios websockets de nodos que están disponibles a través de una URL que coincide con las rutas de los sockets UNIX. En lugar de duplicar la directiva de ubicación, me gustaría tener algo así como una lista de URL que se usarán como nombre de socket. Usar una expresión regular no funciona porque necesito la ruta para el nombre del socket.
Actualmente estoy usando esta ubicación:
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";
}
el objetivo es tener 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";
}
Básicamente, cada URL de una lista debe redirigirse al socket con el mismo nombre.
Gracias de antemano por cualquier ayuda :)
Respuesta1
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";
}
Respuesta2
Necesitas usar una expresión regular. Algo como esto debería funcionar, pero tendrás que resolver la expresión regular tú mismo. Hay muchos tutoriales ysitios de experimentación de expresiones regulares.
location ~ (app1|app2|app3)$ {