Назад | Перейти на главную страницу

Ограничения CentOS 7 httpd / server-status

У меня есть 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: для соответствия этому виртуальному хосту.