2016-12-01 5 views
2

У меня есть проверки работоспособности HAproxy сконфигурированных со следующим бэкэндом:проверки здоровья HAProxy не работает, но CURL возвращает 200 OK

backend php_servers 
    http-request set-header X-Forwarded-Port %[dst_port] 
    option httpchk get /health 
    http-check expect status 200 
    server php1 internal_ip:80 check 

HAProxy не позволяет сервер, но при использовании CURL я получаю 200 OK ответа.

Command: curl -I internal_ip/health 
Response: 
HTTP/1.1 200 OK 
Server: nginx 
Date: Thu, 01 Dec 2016 20:53:48 GMT 
Content-Type: text/html; charset=UTF-8 
Connection: keep-alive 
Access-Control-Allow-Origin: api.flex-appeal.nl 
X-Frame-Options: SAMEORIGIN 
X-Content-Type-Options: nosniff 
X-XSS-Protection: 1; mode=block 
Cache-Control: no-transform 

Почему HAProxy не признает серверы «UP»? Кажется, я могу нормально подключиться.

ответ

2

Правильный глагол HTTP является GET, не get:

option httpchk GET /health 

Вы также можете проверить/включить stats page: на LastChk колонке вы увидите почему проверка не удалась. В моем случае я получаю ответ 501 Not Implemented.

я могу воспроизвести его, выполнив тот же запрос, как HAProxy:

$ telnet localhost 80 
Trying ::1... 
Connected to localhost. 
Escape character is '^]'. 
get /health HTTP/1.0 

HTTP/1.1 501 Not Implemented 
Date: Thu, 01 Dec 2016 21:53:09 GMT 
Server: Apache/2.4.23 (Unix) PHP/7.0.13 
[...] 
Смежные вопросы