我正在尝试进行HTTP(第7层)检查以监视HAProxy负载平衡器中的后端状态。我配置了3个后端,每个都有自己的名称。当前配置如下:
backend apiservers
balance leastconn
mode http
option httpchk GET /healthz HTTP/1.0\r\nAuthorization:\ Bearer\ SOME_TOKEN_HERE
http-check disable-on-404
http-check expect rstring ^ok
server core1 core1.cloud:443 ssl check
server core2 core2.cloud:443 ssl check
server core3 core3.cloud:443 ssl check
问题是我无法切换到HTTP / 1.1,因为我无法找到一种通过httpchk请求传递真实的Host标头的方法。使用一些随机的虚拟主机字符串可能会导致功能出现问题,因此我需要将相应的后端主机名传递给Host标头。后端部分中的http-request add-header Host %[src]
和http-send-name-header Host
之类的选项似乎不影响httpchk机制。
有什么想法吗?
答案 0 :(得分:0)
每个haproxy docs 都可以在httpchk
行中配置标题。文档中的示例为:
# Relay HTTPS traffic to Apache instance and check service availability
# using HTTP request "OPTIONS * HTTP/1.1" on port 80.
backend https_relay
mode tcp
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
server apache1 192.168.1.1:443 check port 80