我正在尝试让服务器状态在具有使用基本身份验证的apache VHOST的服务器上工作。
在主httpd.conf配置文件中,我设置了服务器状态:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1 10.10.1.246
</Location>
如果我在主机的服务器状态上执行GET,系统会提示我输入用户名和密码:
[root@uszmplb apache2]# GET http://$(hostname -i)/server-status
Enter username for Restricted Area at 10.10.1.246:80:
如果我输入了我有权访问的用户名和密码,我可以从GET命令获取服务器状态页面。但问题是,这需要自动进行监控。如果受到用户名和密码的保护,监控部门不能/不会监控该主机。
如果我将VHOST conf与服务器状态一起移动,我可以获取服务器状态页面:
[root@hostapache2]# GET http://$(hostname -i)/server-status | head -10
<?
require('_config.php');
$contactsData = simplexml_load_file(USE_CMS ? WEB_ROOT . 'wordpress/contacts' : 'data/contacts.xml');
$downloadsData = simplexml_load_file(USE_CMS ? WEB_ROOT . 'wordpress/downloads' : 'data/downloads.xml');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
问题是我需要两全其美。我需要为具有基本身份验证的站点提供服务,我需要能够启用服务器状态。
我尝试通过为服务器状态提供自己的VHOST配置来解决这个问题,以便将服务器状态与具有基本身份验证的VHOST分开,如下所示:
<VirtualHost *>
ServerName host.west.company.com
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1 10.10.1.246
</Location>
</VirtualHost>
但我也没有运气。它只是提示输入用户名和密码。
答案 0 :(得分:0)
在我阅读Apache文档之前,我遇到了同样的问题: http://httpd.apache.org/docs/2.2/en/vhosts/name-based.html
在那里你可以找到:
主要主人消失
如果要将虚拟主机添加到现有Web服务器,则必须执行此操作 还为现有主机创建一个块。该 此虚拟主机中包含的ServerName和DocumentRoot应该是 与全局ServerName和DocumentRoot相同。列出这个虚拟 首先在配置文件中托管,以便它充当 默认主机。
因此,如果您不进行此更改,则会丢失默认Web服务器,例如:
#>httpd -S
[root@localhost]# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server virtualhost.domain.com (/etc/httpd/conf/virtualhost.conf:4)
port 80 namevhost virtualhost.domain.com (/etc/httpd/conf/virtualhost.conf:4)
Syntax OK
如果您想再次获取默认Web服务器(使用所有默认配置,例如/ server-status),您必须创建一个命名虚拟主机,如文档说明所示:
[root@localhost conf]# cat defaultserver.conf
# you can't get this directive inside the <VirtualHost> tag
ExtendedStatus On
<VirtualHost *:80>
ServerAdmin admin@domain.com
ServerName default.domain.com
DocumentRoot "/etc/httpd/htdocs"
# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf
</VirtualHost>
最后,您必须先在配置中包含默认虚拟主机:
[root@localhost conf]# cat virtualhosts.conf
NameVirtualHost *:80
include conf/defaultserver.conf
include conf/virtualhost.conf
重新启动Apache服务器,您可以验证配置:
[root@localhost]# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server default.domain.com (/etc/httpd/conf/defaultserver.conf:4)
port 80 namevhost default.domain.com (/etc/httpd/conf/defaultserver.conf:4)
port 80 namevhost virtualhost.domain.com (/etc/httpd/conf/virtualhost.conf:4)
Syntax OK