Nnginx ordnet URLs Proxy_Pass in einer Standortanweisung zu

Nnginx ordnet URLs Proxy_Pass in einer Standortanweisung zu

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)$ {

verwandte Informationen