Nnginx сопоставляет URL-адреса с proxy_pass в одной директиве местоположения

Nnginx сопоставляет URL-адреса с proxy_pass в одной директиве местоположения

У меня есть несколько узлов веб-сокетов, которые доступны через URL, соответствующий путям сокетов UNIX. Вместо дублирования директивы местоположения я хотел бы иметь что-то вроде списка URL, которые будут использоваться в качестве имени сокета. Использование регулярных выражений не работает, потому что мне нужен путь для имени сокета.

В настоящее время я использую это местоположение:

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

цель состоит в том, чтобы получить что-то вроде:

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

По сути, каждый URL в списке должен быть перенаправлен на сокет с тем же именем.

Заранее благодарю за любую помощь :)

решение1

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

решение2

Вам нужно использовать регулярное выражение. Что-то вроде этого должно работать, но вам придется самостоятельно придумать регулярное выражение. Есть много руководств исайты экспериментов с регулярными выражениями.

location ~ (app1|app2|app3)$ {

Связанный контент