Ich verwende nginx als Reverse-Proxy für einen Dienst, der auf Port 8080 des lokalen Computers ausgeführt wird. Zusätzlich muss ich Pfade, die mit/vp an den Upstream gesendet werden, voranstellen. Das ist einfach und ich habe einen Arbeits location
Block für sie:Problem beim Umschreiben von URLs
location ~ ^/(.*?)$ {
proxy_pass $scheme://127.0.0.1:8080/vp/$1;
proxy_set_header Host $host;
proxy_redirect $scheme://$host/vp/ $scheme://$host/;
}
So würde das oben eine URL wie example.com/resource
unterstützen und perfekt funktionieren.
Allerdings möchte ich auch URLs wie example.com/vp/resource
unterstützen. Dazu muss ich einen anderen location
Block schreiben, sonst würde es an den Upstream als /vp/vp/resource
übergeben, was nicht funktioniert.
location ~ ^/vp/(.*?)$ {
rewrite /vp(.*?)$ /$1;
}
Die oben genannten Arbeiten, und ich habe jetzt Unterstützung für Urls wie example.com/vp/resource
.
Aber ich habe eine letzte Sache, die ich gerne beheben würde. Wenn ein Benutzer auf example.com/vp/resource
zugreifen möchte, soll die URL im Browser nur in example.com/resource
umgeschrieben werden. Meine obige Konfiguration tut das nicht und ich weiß nicht, wie ich sie modifizieren soll. Ich dachte, der Punkt des Neuschreibens wäre, URLs im Browser zu schreiben, aber das scheint nicht der Fall zu sein.