Я пытаюсь выполнить HTTP-проверки в HAProxy с определенным именем хоста.
Вот фрагмент моей конфигурации бэкэнда:
option httpchk HEAD / HTTP/1.1\r\nHost: example.com
http-check expect rstatus (2)[0-9][0-9]
Когда я просматриваю журналы IIS на проверяемом сервере, имя хоста (cs-host
) пусто:
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2016-04-15 20:24:09 W3SVC3 123.123.123.123 HEAD / - 80 - 456.456.456.456 - - - 302 0 0 365 45 14
По сравнению с запросом из браузера, где видно имя хоста:
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2016-04-15 12:29:18 W3SVC3 123.123.123.123 GET / - 80 - 456.456.456.456 Mozilla/5.0+(Windows+NT+6.3;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - example.com 302 0 0 397 249 1959
Я использую HA-Proxy версии 1.5.14 2015/07/02
Как заставить HAProxy отправлять имя хоста с помощью HTTP-проверки?
Возможно, вам потребуется экранировать пробел перед example.com, т.е.
option httpchk HEAD / HTTP/1.1\r\nHost:\ example.com
Обратите внимание на обратную косую черту перед "example.com". В качестве альтернативы вы можете попробовать добавить:
http-send-name-header Host
в этой бэкэнд-конфигурации.
Надеюсь это поможет!