在 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 不是 Web 服务器。它无法生成包含动态数据的标头 - 如果您确实需要日期标头,请使用 Web 服务器。有几种轻量级的 Web 服务器可以完成此任务。

或者告诉我们为什么需要这样的标题,我们也许能够提供更恰当的解决方案的建议。

答案3

我在 github 问题讨论中发现从 Haproxy 2.2 开始这是可能的

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

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

相关内容