У меня есть VPS (использую CentOS 7 в качестве ОС), и теперь я настраиваю Мунин (программное обеспечение для мониторинга). У меня возникла небольшая проблема с мониторингом Apache.
Теперь у меня есть этот cfg в моем httpd.conf и все отлично работает:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
Терминал Мунин:
munin-node-configure --suggest | grep apache
apache_accesses | yes | yes
apache_processes | yes | yes
apache_volume | yes | yes
Но с такими настройками /server-status
доступно через весь домен на сервере:
example.com/server-status
example.net/server-status
192.0.2.1/example-status
Я хочу добиться чего-то вроде этого:
example.com/server-status ---> ERROR 404
example.net/server-status ---> ERROR 404
192.0.2.1/example-status ---> OK
Поэтому, когда я перемещаю cfg из httpd.conf в свой файл по умолчанию vhost, который теперь выглядит:
<VirtualHost _default_:80>
DocumentRoot /var/www/server
ErrorLog /var/log/www/server_error.log
CustomLog /var/log/www/server_requests.log combined
</VirtualHost>
И после обновления:
<VirtualHost _default_:80>
DocumentRoot /var/www/server
ErrorLog /var/log/www/server_error.log
CustomLog /var/log/www/server_requests.log combined
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
</VirtualHost>
Затем Munin перестанет отслеживать службу apache и скажет:
apache_accesses | yes | no [apache server-status not found. check if mod_status is enabled]
apache_processes | yes | no [apache server-status not found. check if mod_status is enabled]
apache_volume | yes | no [apache server-status not found. check if mod_status is enabled]
PS: у сервера нет имени хоста (я имею в виду домен), теперь я использую IP-адрес сервера в качестве его имени хоста
Вы можете помочь мне добиться требуемых настроек?
Я думаю, вам удастся создать виртуальный хост с нужным ServerName. ServerName в настройке виртуального хоста на основе имени соответствует тому, что ваш браузер / HTTP-клиент помещает в Host
поле заголовка.
Итак, это должно работать:
<VirtualHost *:80>
ServerName 192.168.1.2
DocumentRoot /var/www/server
ErrorLog /var/log/www/server_error.log
CustomLog /var/log/www/server_requests.log combined
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
</VirtualHost>
Документы Apache (https://httpd.apache.org/docs/current/mod/core.html#servername) укажите, что вы можете использовать IP в качестве ServerName, и объясните, как работает ServerName, следующим образом:
Если вы используете виртуальные хосты на основе имен, ServerName внутри раздела указывает, какое имя хоста должно появиться в заголовке запроса Host: для соответствия этому виртуальному хосту.