Problem:
- Ich verwende eine Nginx-
proxy_pass
Direktive, umhttps
Anfragen mit einem bestimmtenlocation
Pfad in der URI umzuleiten, z. B.https://domain/path/index.html
anhttp://container_ip:port/index.html
. - Für die erste Anfrage funktioniert das problemlos.
- Wenn in der HTML-Datei jedoch zu ladende Ressourcen angegeben sind, suchen Clients diese Ressourcen ohne Pfad und verwenden nur die Basis-URL (im Beispiel )
https://domain/main.css
.
Frage:
Wie kann ich nginx so konfigurieren, dass solche Ressourcen auch am ursprünglichen Pfad gesucht werden, im Beispiel bei https://domain/path/main.css
?
Aktuelle falsche Nginx-Konfiguration:
server {
listen 443 ssl;
server_name domain;
[...]
location /path/ {
proxy_set_header Host $host;
proxy_pass http://container_ip:port/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Antwort1
Pfade zu Ressourcen werden von Ihrer Anwendung generiert. Der richtige und zuverlässige Ansatz besteht darin, Ihre Anwendung so zu reparieren, dass Ressourcen-URLs mit korrekten Pfaden generiert werden.
Wenn Sie eine unzuverlässige Lösung wünschen, können Sie versuchen,http://nginx.org/en/docs/http/ngx_http_sub_module.htmlum Ressourcen-URLs in Antworten zu ersetzen, die Nginx als Proxy verwendet. Es besteht jedoch die Möglichkeit unerwünschter Nebenwirkungen, die schwer zu diagnostizieren sein können.