nginx:如何在 proxy_pass 指令中新增主機的 URI 路徑?

nginx:如何在 proxy_pass 指令中新增主機的 URI 路徑?

問題:

  • 我使用 nginxproxy_pass指令將請求重定向到URI 中的https特定路徑,例如,重定向到.locationhttps://domain/path/index.htmlhttp://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。然而,有可能出現難以診斷的不良副作用。

相關內容