我的HAproxy配置中有一个简单的条件(我试过 frontend 和后端):
acl no_index_url path_end .pdf .doc .xls .docx .xlsx
rspadd X-Robots-Tag:\ noindex if no_index_url
它应该将no-robots标头添加到不应编入索引的内容中。但是在解析配置时它给了我WARNING
:
acl 'no_index_url' will never match because it only involves keywords
that are incompatible with 'backend http-response header rule'
和
acl 'no_index_url' will never match because it only involves keywords
that are incompatible with 'frontend http-response header rule'
根据documentation,rspadd
可用于前端和后端。 frontend 中的示例中使用了path_end
。为什么我会收到此错误,这是什么意思?
答案 0 :(得分:13)
从HaProxy 1.6开始,您将无法忽略错误消息。要使其正常工作,请使用临时变量功能:
frontend main
http-request set-var(txn.path) path
backend local
http-response set-header X-Robots-Tag noindex if { var(txn.path) -m end .pdf .doc }
答案 1 :(得分:2)
显然,即使有警告,在前端内设置acl
也能完美无缺。所有使用.pdf,.doc等的资源都会添加正确的X-Robots-Tag
。
换句话说,这个WARNING
会产生误导,实际上acl
会匹配。
答案 2 :(得分:0)
如果在v1.6以下使用haproxy,请创建一个新的后端块(可以与默认后端重复)并在其中添加特殊的标头。然后在前端有条件地使用该后端。即
use_backend alt_backend if { some_condition }
虽然不是理想的解决方案,但确实可以。