
У меня есть несколько узлов веб-сокетов, которые доступны через 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)$ {