在 HAProxy 重定向功能中註入標頭

在 HAProxy 重定向功能中註入標頭

我有 HAProxy 1.5.8。

我有這個基本的 301 法則:

frontend http_frontend
  bind *:80
  mode http
  redirect location https://xxxx.com code 301

響應如下圖所示:

HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://xxxx.com
Connection: close

我需要在標題中添加一個日期,就像常規網頁伺服器所做的那樣。

雷斯帕德函數似乎不影響重定向。

是否可以 ?

答案1

這是可以做到的,HaProxy 的 Willy 在這裡找到了解決方案:

https://www.mail-archive.com/[電子郵件受保護]/msg25061.html

http-request redirect location "https://blah..\r\nDate: xyz"

我想要解決的問題是添加 HSTS 標頭,但我想您可以將它用於約會。

它並不漂亮,但確實有效,而且我剛剛實現了它,對於我們來說,我們還想渲染一個標頭來標識生成重定向的框,因為我們有多個 HaProxy 框。

這是我在 HaProxy 1.6 中測試的,我不能保證其他版本。

答案2

對於任何曾經見過重定向的瀏覽器來說都是不可能的。它被無限期地緩存。只有當您永久停用某個網站時才應使用 301 重定向,即使如此,這也是一個壞主意 - 您會失去仍然訪問舊網站的流量的可見性。

因此,在執行其他操作之前,請將其變更為 302 重定向。

Haproxy 不是網頁伺服器。它無法產生包含動態資料的標頭 - 如果您確實想要日期標頭,請使用網頁伺服器。有幾個輕量級的能夠勝任這項任務。

或告訴我們為什麼你需要這樣的標題,我們也許能夠建議更合適的解決方案。

答案3

我在 github 問題討論中發現從 Haproxy 2.2 開始就有可能

https://stackoverflow.com/a/72830822/1849577

http-after-response set-header Cache-Control max-age=3600 if {condition}

相關內容