apache虛擬主機以及相關配置

1.基於名稱的虛擬主機,其中多個主機都指向同一個IP地址,但是web服務器根據用於到達站點的主機名提供具有不同內容的不同站點,web服務器將其配置 文件中查看每個傳入請求的IP地址的第一個VirtualHost塊,其中ServerName 或ServerAlias與請求所使用的主機名相匹配,他將根據匹配的VirtualHost的配置提供的內容,如果主機名在任何塊中都不匹配,那麼默認情況下將使用請求的IP地址的第一個VirtualHost塊。

題目:部署兩個虛擬主機,要求如下:
   1)虛擬主機1:http://serverX.example.com, 發佈目錄:/var/www/virtual
   2)虛擬主機2:http://wwwX.example.com,發佈目錄:/www2/virtual
   3)其中/www/virtual/private是受保護區域,需要用戶驗證,用戶名:sushan密碼:sushan
   4)下載CGI文件ftp://instructor/pub/gls/special.cgi,並將其安裝爲http://wwwX.example.com/cgi-bin/special.cgi

(1)修改配置文件

vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80(前面的註釋去掉,指定在其中啓用基於地址名稱的虛擬主機)
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName desktop2.example.com
(指定服務器的名稱,在使用基於名稱的虛擬主機>的情況下,此處的名稱必須和客戶端的請求完全一致的)
ServerAlias desktop2
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
(指定管理電子郵件的客戶帳號web頁面出錯將提供此電子郵件的地址)
DocumentRoot /www2/virtual(定義提供內容的目錄)
ServerName www2.example.com
ServerAlias www2
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

(2)mkdir /www2/virtual -p
然後給/www2/virtual賦予安全上下文的權限,
chcon --reference=/var/www/html/ /www2 -R(或者是使用命令semanage fcontext -a -t httpd_sys_content_t "/www(/.*)?" restorecon -VvFR /www2或者是一條命令chcon -t httpd_sys_content_t -R
(3) cd /www2/virtual
echo `pwd` > index.html
cd /var/www/html
echo `pwd` > index.html

(4)在你主機上添寫解析:
192.168.0.2 desktop2.example.com
192.168.0.2 www
2.example.com(注意寫解析的時候要先寫IP再寫域名,否則解析不過去)
(5)重啓服務:/etc/init.d/httpd restart
打開瀏覽器:輸入desktop2.example.com顯示:
/var/www/html
輸入www2.example.com顯示:
/www2/virtual
實驗2:倘若/www/virtual/private是受保護區域,需要用戶驗證,用戶名:sushan 密碼:sushan
(1)修改配置文件
vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName desktop2.example.com
ServerAlias desktop2
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /www2/virtual
ServerName www2.example.com
ServerAlias www2
ScriptAlias /cgi-bin/ "/www2/virtual/cgi-bin/"   //將指定的/www2/virtual/cgi-bin可以用/cgi-bin。也就是說你輸入/cgi-bin和輸入/www2/virtual/cgi-bin是一樣
<Directory "/www2/virtual/private">     //以下是關於私有文件的訪問控制。
authname "sushanshan"
authtype basic
authuserfile /etc/httpd/.htpasswd
require user sushan
</Directory>

ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
(2)mkdir /www2/virtual/cgi-bin
mkdir /www2/virtual/private
cd /www2/virtual/cgi-bin
wget ftp://instructor/pub/gls/special.cgi .
chcon --reference=/var/www/cgi-bin /www2/virtual/cgi-bin -R
cd /www2/virtual/private
echo private > index.html
chcon --reference=/var/www/html /www2/virtual/private -R

(3)htpasswd -cm /etc/httpd/.htpasswd sushan(輸入密碼)
(4)service httpd restart
(5)寫解析
192.168.0.2 desktop2.example.com
192.168.0.2 www2.example.com

(6)測試:
http://desktop2.example.com 輸出/var/www/html
http://www27.example.com 輸出/www2/virtual
http://www27.example.com/cgi-bin/special.cgi 輸出hello
http://www2.example.com/private/ 輸出private,不過此時要輸入密碼 的哦!(你剛纔設置的)

另外你也可以用elinks -dump http://desktop2.example.com
elinks -dump http://www2.example.com

附加:Apache LDAP 用戶身份驗證,在此配置中,用戶賬戶和密碼存儲在遠程 LDAP 目錄服務中。此配置的優勢在於多個 Web 服務器可以使用一個目錄服務來存儲用戶賬戶和密碼,從而可以更加輕鬆地保持兩者的同步性。配置如下:
(1)配置客戶端 LDAP 身份驗證,將 instructor.example.com 用作 LDAP 服務器, dc=example,dc=com並使用在 ftp://instructor.example.com/pub/example-ca.crt 上的證書 , 選擇 LDAP 密碼。
(2)下載 LDAP 證書 ftp://instructor.example.com/pub/example-ca.crt ,並將其複製到 /etc/httpd

wget ftp://instructor.example.com/pub/example-ca.crt -P /etc/httpd
(3)假設之前定義 VirtualHost 塊,請將諸如以下內容添加至 VirtualHost 塊:
LDAPTrustedGlobalCert CA_BASE64 /etc/httpd/example-ca.crt # 此選項不能在 Virtualhost語句塊中
<VirtualHost *:80>
......
 <Directory "/www2/virtual/private">
                authname "secret"
                authtype basic
                authbasicprovider ldap
                authldapurl "ldap://instructor.example.com/dc=example,dc=com" TLS
                require valid-user
    //合法用戶
        </Directory>
</VirtualHost>
(4)重啓 apache 服務,並使用 Web 瀏覽器測試訪問http://www2.example.com/private/index.html,以用戶 ldapuser1 和密碼 password 登錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章