Я чувствую, что hdr_sub лучше для ваших нужд. Я использовал hdr_end некоторое время, но это сталкивается со следующей проблемой:
запросы с портом 80 обычно удаляют порт, поэтому заголовок узла выглядит как «example.com», но если вы явно запрашивали порт, например, example.com:8080, заголовок будет иметь порт, а hdr_end завершится ошибкой. проверьте для "example.com".
hdr_sub выполнит сопоставление подстроки, которое кажется вам более подходящим (и мне).
У любого решения есть неприятная вещь, которая мне не нравится. Порядок зависимой оценки результатов.
например (мои условия выглядят так на веб-интерфейсе)
acl is_dbadmin hdr_sub(host) -i dbadmin.example.com
Запрос на порт 8080 будет выглядеть так:
Jul 9 02:48:40 localhost haproxy[8]: 192.168.1.1:55870 [09/Jul/2015:02:48:40.865] http-in example/s1 1/0/0/20/110 200 330722 - - ---- 0/0/0/0/0 0/0 {**example.com:8080**||http://example.com:} {Apache/2.4.10 (Debia||||} "GET /wp-includes/js/zxcvbn.min.js HTTP/1.1"
где порт 80, вероятно, может быть таким
Jul 9 02:48:40 localhost haproxy[8]: 192.168.1.1:55870 [09/Jul/2015:02:48:40.865] http-in example/s1 1/0/0/20/110 200 330722 - - ---- 0/0/0/0/0 0/0 {example.com||***http://example.com***:} {Apache/2.4.10 (Debia||||} "GET /wp-includes/js/zxcvbn.min.js HTTP/1.1"