簡體   English   中英

VHOST基本身份驗證與apache服務器狀態沖突

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM