問題:
- 我使用 nginx
proxy_pass
指令將請求重定向到URI 中的https
特定路徑,例如,重定向到.location
https://domain/path/index.html
http://container_ip:port/index.html
- 這對於最初的請求來說效果很好。
- 但是,如果 HTML 檔案指定要載入的資源,則用戶端將只使用基本 URL 來搜尋這些資源,而無需路徑;在範例中
https://domain/main.css
。
問題:
如何配置nginx,以便在原始路徑中也搜尋此類資源;在https://domain/path/main.css
? 的例子中
目前不正確的 nginx 設定:
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;
}
}
答案1
資源路徑由您的應用程式產生。正確且可靠的方法是修復您的應用程式以產生具有正確路徑的資源 URL。
如果您想要一個不可靠的解決方案,您可以嘗試使用http://nginx.org/en/docs/http/ngx_http_sub_module.html取代 nginx 代理程式的回應中的資源 URL。然而,有可能出現難以診斷的不良副作用。