Nginx
讓 Nginx 重寫後端響應
我在其他伺服器上執行了一些服務,這些服務在沒有 SSL的情況下在http://someLocalIp:80上提供 Web 應用程序。我想將其包裝在 ssl 中並在https://nginxServer-globalIp/deliver/上公開
我可以看到這樣的後端服務,但這顯然會破壞所有連結和引用,因為現在“/deliver/”必須是前綴。我不明白如何使用重寫,因為重寫似乎(對我來說)主要用於更改請求而不是來自後端的回复。這是可能嗎?:)
目前配置:
server { listen 443; ssl on; ssl_certificate /etc/ssl/some.crt; ssl_certificate_key /etc/some.key; location /deliver { proxy_pass http://someLocalIp; } }
我嘗試在 proxy_pass 末尾添加 / (正如許多答案所暗示的那樣),但這會產生一個空白響應,就好像後端服務沒有向 nginx 提供任何東西一樣。
此外,更改後端以匹配“/deliver”前綴並不像聽起來那麼容易,所以我希望不這樣做也可以做到這一點。
反向代理有其局限性。無論如何,重寫每個嵌入的 URL(超連結、圖像、資源連結)都會很昂貴。
正如您所推測的,
nginx
代理模組可以重寫請求,並且可以重寫location
重定向響應中的欄位。但否則它會保持封閉的 HTML 文件不變。但是,我讀到如果你真的需要走這條路,有一個Apache 模組可以工作。