Hallo alle zusammen,
ich habe ein Problem mit der Konfiguration von nginx und hoffe hier hat jemand eine Idee.
Mein Vorhaben: Ich möchte einen nginx vhost anlegen, der basierend auf der subdomain die Verbindung an einen anderen Port auf einem anderen Server weiterproxiet.
Also z.B.
p1234.example.com -> proxy zu http://andererserver:1234
p1111.example.com -> proxy zu http://andererserver:1111
p2222.example.com -> proxy zu http://andererserver:2222
hallo.example.com -> Error 444
Also alle gültigen Subdomains beginnen mit p, dann eine vierstellige Nummer, das Ziel der Proxyverbindung ist immer der gleiche Server, der Port entspricht der Nummer nach dem "p".
Ungültige Subdomains (ohne p am Anfang) sollen mit Error 444 quittiert werden.
Ausgangssituation:
server {
listen 80;
server_name ~^(p.*)\.example\.com$ ;
location / {
# Change correct local Port here!
proxy_pass http://andererserver.domain.tld:$1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
server {
listen 80 default_server;
server_name _;
return 444;
}
Alles anzeigen
Diese Konfiguration funktioniert schon "ein Bisschen"
Ich habe aktuell das Problem, dass die Subdomains mit "p" beginnen. In der Variable $1 wird die Subdomain gespeichert, also wird eine Verbindung der Subdomain p1000.example.com geproxiet an "http://andererserver.domain.tld:p1000" , was natürlich ungültig ist...
Also wie bekomme ich das p am Anfang der Variable $1 weg?
Vielleicht kann mir ja ein Meister hier einen Rat geben
Vielen Dank schonmal und viele Grüße
marpri