我有 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}