
Ich habe mehrere Node-WebSockets, die über eine URL verfügbar sind, die den UNIX-Socket-Pfaden entspricht. Anstatt die Standortanweisung zu duplizieren, hätte ich gerne so etwas wie eine Liste von URLs, die als Socket-Name verwendet werden. Die Verwendung eines regulären Ausdrucks funktioniert nicht, da ich den Pfad für den Socket-Namen benötige.
Derzeit verwende ich diesen Standort:
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";
}
das Ziel ist, so etwas zu haben wie:
$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";
}
Grundsätzlich sollte jede URL in einer Liste auf den Socket mit dem gleichen Namen umgeleitet werden.
Vielen Dank im Voraus für jede Hilfe :)
Antwort1
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";
}
Antwort2
Sie müssen einen regulären Ausdruck verwenden. So etwas sollte funktionieren, aber Sie müssen den regulären Ausdruck selbst ausarbeiten. Es gibt viele Tutorials undExperimentierseiten für reguläre Ausdrücke.
location ~ (app1|app2|app3)$ {