1.5 版新增了http-response add-header
指令。如文档-- 这可用于frontend
、backend
和listen
。
我试图在一个frontend
部分内执行以下操作:
use_backend some_backend if some_condition
http-response add-header Vary Origin if some_condition
但这没有效果。 放在backend
部分中的同一行完全可以正常工作。 有人能帮我理解我这里遗漏了什么吗? 我不明白为什么这在部分中不起作用frontend
。
我的猜测是,在指令内fronted
还没有响应,因此指令失败。我尝试在use_backend
指令之前和之后使用它。
答案1
使用您的示例在前台运行 haproxy ( haproxy -d -V -f haproxy.cfg
) 显示以下警告:
acl 'some_condition' will never match because it only involves keywords that are incompatible with 'frontend http-response header rule'
摆弄我的配置时,我发现使用此 ACL 时会显示此警告:
acl some_condition req.hdr(Content-Type) -i application/json
但使用此 ACL 时则不然:
acl some_condition res.hdr(Content-Type) -i application/json
区别在于res
,req
因此检查的是响应标头而不是请求标头。这使我相信,http-response header
中的规则frontend
无法检查request
标头。
我不知道这是否是 HAProxy 的预期功能,但它肯定没有得到明确的记录。