Я спросил об этом в stackoverflow, но я думаю, что здесь лучше подходит.
Не могу понять этого!
ОС: CentOS 6.6 (последняя версия)
Я получаю следующую ошибку 503 при использовании моих nagios check_http
check (или curl) для запроса SSL-сайта, обслуживаемого через HAProxy 1.5.
[root@nagios ~]# /usr/local/nagios/libexec/check_http -v -H example.com -S1
GET / HTTP/1.1
User-Agent: check_http/v2.0 (nagios-plugins 2.0)
Connection: close
Host: example.com
https://example.com:443/ is 212 characters
STATUS: HTTP/1.0 503 Service Unavailable
**** HEADER ****
Cache-Control: no-cache
Connection: close
Content-Type: text/html
**** CONTENT ****
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>
HTTP CRITICAL: HTTP/1.0 503 Service Unavailable - 212 bytes in 1.076 second response time |time=1.075766s;;;0.000000 size=212B;;;0
[root@nagios ~]# curl -I https://example.com
HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html
Тем не мение. Я могу получить доступ к сайту через любой браузер; (200 OK), а также curl -I https://example.com
с другого сервера:
root@localhost:~# curl -I https://example.com
HTTP/1.1 200 OK
Date: Wed, 18 Feb 2015 14:36:51 GMT
Server: Apache/2.4.6
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
Last-Modified: Wed, 18 Feb 2015 14:36:52 GMT
Content-Type: text/html; charset=UTF-8
Strict-Transport-Security: max-age=31536000;
Сервер HAProxy работает на pfSense 2.2.
Я вижу, что HAProxy возвращает HTTP / 1.0 для nagios и HTTP / 1.1 из других источников. Так это мой check_http
плагин, вызывающий это, или это curl
?
Мой сервер просто не отправляет заголовок HOST? Если да, то как я могу это решить?
check_http имеет параметр, называемый --sni
Вам нужно использовать эту опцию
Вам необходимо отредактировать /usr/local/nagios/etc/objects/commands.cfg и изменить https arument От «-I» до «-H»
Это укажет ему на поиск имени хоста вместо dip-адреса, указанного в вашем блоке http_check в конфигурации сервера: /usr/local/nagios/etc/servers/yourserver.cfg
из:
# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
Кому:
# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -H $HOSTADDRESS$ $ARG1$
}
Вы пытались указать опцию «-u» для URL-адреса? Я также использовал IP-адрес и имя хоста. У меня также есть HAProxy и то же сообщение, что и у вас в начале.
Использую команду:
./check_http -H example.com -I 8.8.8.8 -p 80 -u http://example.com/
И теперь дело в работе!