设置 HAProxy 响应的标头

设置 HAProxy 响应的标头

1.5 版新增了http-response add-header指令。如文档-- 这可用于frontendbackendlisten

我试图在一个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

区别在于resreq因此检查的是响应标头而不是请求标头。这使我相信,http-response header中的规则frontend无法检查request标头。

我不知道这是否是 HAProxy 的预期功能,但它肯定没有得到明确的记录。

相关内容