У меня есть несколько узловых веб-узлов, которые доступны через 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 в списке должен быть перенаправлен на сокет с тем же именем.
Заранее благодарю за любую помощь :)
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";
}
Вам нужно использовать регулярное выражение. Что-то вроде этого должно работать, но вам придется вычислить регулярное выражение самостоятельно. Есть много руководств и сайты экспериментов с регулярными выражениями.
location ~ (app1|app2|app3)$ {