Nginx

讓 Nginx 重寫後端響應

  • November 29, 2015

我在其他伺服器上執行了一些服務,這些服務在沒有 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 模組可以工作。

引用自:https://serverfault.com/questions/739494