[英]VHOST Basic Auth conflicts with apache server-status
我正在嘗試使服務器狀態在具有使用基本身份驗證的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配置來解決此問題,以將服務器狀態與具有基本auth的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>
但是我也沒有運氣。 它只是像以前一樣提示輸入用戶名和密碼。
在閱讀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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.