私はstackoverflowでこれを尋ねましたが、ここに適していると思います。
これを理解することはできません!
OS:CentOS 6.6(最新)
Nagiosを使用すると次の503エラーが発生しますcheck_http
チェック(またはカール)して、HAProxy1.5経由で提供されるSSLサイトを照会します。
[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サーバーはpfSense2.2で実行されています。
HAProxyがnagiosのHTTP/1.0と他の場所からのHTTP/1.1を返すことがわかります。それで私のcheck_http
プラグインがこれを引き起こしていますか、それともcurl
ですか?
サーバーがHostヘッダーを送信していないだけですか?もしそうなら、どうすればこれを解決できますか?
check_httpには、--sni
というオプションがあります。
そのオプションを使用する必要があります
URLに「-u」オプションを付けようとしましたか? IPアドレスとホスト名も使用しました。私もHAProxyを持っており、最初にあなたと同じメッセージがあります。
私は次のコマンドを使用しました:
./check_http -H example.com -I 8.8.8.8 -p 80 -u http://example.com/
そして今、それは仕事です!
/usr/local/nagios/etc/objects/commands.cfgを編集し、https arument "-I"を "-H"に変更する必要があります。
これにより、サーバー構成のhttp_checkブロックで指定されたdip-addressの代わりにホスト名を検索するように指示されます:/usr/local/nagios/etc/servers/yourserver.cfg
from:
# '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$
}