我正试图通过monit监视本地apache实例上的vhost。同一个域同时接受http和https流量,所以我想监视两者。
此外,域解析为的IP将转到一个服务器,该服务器在当前的Apache实例和运行Apache的另一个服务器之间负载平衡流量。我需要monit来监视本地实例,我希望避免在/etc/hosts文件中添加任何记录,所以我认为monits配置设置with http headers []
就足够了,我认为是这样(只监视本地主机,但将头Host
设置为vhost域)。
无论如何,我似乎遇到的主要问题是,即使我将monit配置为通过http和https协议监视主机,它也只通过http监视两个主机,但是对于我使用https协议所需的端口,它设置为443。
apache的monit配置文件是:
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/bin/systemctl restart httpd.service" with timeout 60 seconds
stop program = "/bin/systemctl stop httpd.service"
check host localhost with address localhost
if failed
port 80
protocol http
with http headers [Host: www.domain.com, Cache-Control: no-cache]
and request / with content = "www.domain.com"
then restart
if failed
port 443
protocol https
with http headers [Host: www.domain.com, Cache-Control: no-cache]
and request / with content = "www.domain.com"
then restart
if 5 restarts within 5 cycles
then timeout
这是这张支票的监控状态:
[root@server enabled-monitors]# monit status localhost
The Monit daemon 5.14 uptime: 14m
Remote Host 'localhost'
status Connection failed
monitoring status Monitored
port response time FAILED to [localhost]:443/ type TCPSSL/IP protocol HTTP
port response time 0.001s to [localhost]:80/ type TCP/IP protocol HTTP
data collected Tue, 26 Apr 2016 10:44:32
很明显,http s失败了,因为它仍然试图使用端口http,尽管我在配置中使用了
protocol https
。如有任何意见,将不胜感激。我觉得这可能是一个bug,我将在monit github repo中创建一个问题,但我不想确保这不是我忽略的愚蠢的事情。
谢谢您!
最佳答案
很晚才回复,但我想我还是会给偶然发现同样问题的读者发邮件。
尽管为https配置了检查,但monit使用端口http似乎没有问题。它总是报告http协议的状态(显示错误)。
真正的问题可能是monit不支持ssl的sni,因此它忽略了https检查中的with http headers [Host: www.domain.com ...
。因此检查失败,因为monit实际上正在测试https://localhost
。
我已经向monit开发人员提交了bughere。
关于apache - Monit仅对HTTPS网站使用HTTP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36895387/