Добавление заголовка в ответ для определенных 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 } 

конечно не идеальное решение, но это делает работу.