Добавление заголовка в ответ для определенных URL-адресов с помощью HAproxy
у меня есть простое условие в моей конфигурации HAproxy (я пробовал это для интерфейс и бэкэнд):
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'
по данным документация, rspadd
может использоваться в обоих интерфейс и бэкэнд. The path_end
is используется в примерах в интерфейс. Почему я получаю эту ошибку и что это значит?
3 ответов
начиная с 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 }
по-видимому, даже с предупреждением, имея acl
внутри интерфейса работает отлично. Все ресурсы .документ PDF. ,doc и т. д. получают правильное X-Robots-Tag
добавил к ним.
иными словами,WARNING
вводит в заблуждение и на самом деле acl
тут матч.
при использовании haproxy ниже v1.6, Создайте новый бэкэнд-блок (может быть дубликатом бэкэнда по умолчанию) и добавьте туда специальные заголовки. затем в frontend используйте этот бэкэнд условно. т. е.
use_backend alt_backend if { some_condition }
конечно не идеальное решение, но это делает работу.