LAMP系列:基於域名的虛擬WEB主機

LAMP系列文章列表:
LAMP系列:構建httpd網站服務器
LAMP系列:基於域名的虛擬WEB主機
------------------------------------------------------------
前言:

Apache HTTP Server 之所以受到衆多企業的青睞,得益於其代碼開源、跨平臺、功能模塊化、可靈活定製等諸多優點,不僅性能穩定,在安全性方面的表現也十分出色,基於上一篇博文《LAMP系列:構建httpd網站服務器》本篇博文通過一個案例的實施,將進一步學習httpd服務器的訪問控制、虛擬Web主機的構建等相關知識。
-------------------------------------------------------------------------
在上一篇博文《LAMP系列:構建httpd網站服務器》中,細心的人可能會發現,在訪問AWStats日誌分析系統時並不需要提供帳號和密碼,只要知道對應的網址就可以獲知WEB站點的訪問情況,這給服務器的安全帶來了隱患。在本篇博文中將解決這個問題。

注:本案例中的Apache是用源碼安裝,詳細安裝方法請參考我的另一篇博文《LAMP系列:構建httpd網站服務器http://minitoo.blog.51cto.com/4201040/864291
-------------------------------------------------------------------------
案例環境一:基於域名的虛擬WEB主機

公司的網站服務器使用的IP地址爲192.168.100.100,並使用該IP地址註冊了兩個域名www.yye1.comwww.minitoo.com。服務器中已經安裝好了RHEL5操作系統,並通過源碼編譯的方式安裝了Web服務器軟件httpd-2.2.17,現需要對httpd服務進行配置,以支持同時運行這兩個Web站點。

案例描述:

1)站點www.yye1.com的網頁文檔存放在服務器的/var/www/html/yye1.com目錄下。
2)站點www.minitoo.com的網頁文檔存放在服務器的/var/www/html/minitoo.com目錄下。
3)構建基於域名的虛擬主機服務器,用於支撐以上兩個WEB站點。
4)其中www.minitoo.com站點只對公司內部員工開放,訪問時需進行用戶認證。

案例實施:

1)爲虛擬主機提供域名解析
1.先搭建一臺DNS服務器,負責解析域名www.yye1.comwww.minitoo.com。(本例以CentOS5.4.x86_64爲平臺)

  1. # yum -y install bind bind-chroot caching-nameserver     //安裝bind  
  2. # cd /var/named/chroot/etc/  
  3. # cp -p named.caching-nameserver.conf named.conf      //生成全局配置文件  
  4. # vi named.conf         //編輯全局配置文件  
  5.     options {  
  6.                      listen-on port 53 { 192.168.100.110; };  
  7.                      ……  
  8.                      allow-query     { any; };  
  9.                      allow-query-cache { any; };  
  10.                    };  
  11.      ……  
  12.      view 100 {  
  13.                     match-clients      { any; };  
  14.                     match-destinations { any; };  
  15.                     recursion yes;  
  16.                     include "/etc/named.zones";  
  17.                     };  
  18. # cp -p named.rfc1912.zones named.zones        //生成主配置文件  
  19. # vi named.zones      //編輯主配置文件  
  20.         zone "yye1.com." IN {  
  21.                       type master;  
  22.                       file "yye1.com.zero";  
  23.                       allow-update { none; };  
  24.                       };  
  25.         zone "minitoo.com." IN {  
  26.                       type master;  
  27.                       file "minitoo.com.zero";  
  28.                       allow-update { none; };  
  29.                       };   
  30. # cd ../var/named/                                   //切換區域配置文件目錄  
  31. # cp -p named.zero yye1.com.zero          //生成yye1.com區域配置文件  
  32. # cp -p named.zero minitoo.com.zero    //生成minitoo.com區域配置文件   
  33. # vi yye1.com.zero                                  //修改yye1.com區域配置文件   
  34.  
  35.   $TTL    86400  
  36.   @               IN SOA  dnssvr.yye1.com.      dongjun.yye1.com. (  
  37.                                           42              ; serial (d. adams)  
  38.                                           3H              ; refresh  
  39.                                           15M             ; retry  
  40.                                           1W              ; expiry  
  41.                                           1D )            ; minimum  
  42.           IN      NS      dnssvr.yye1.com.  
  43.   dnssvr  IN      A       192.168.100.110  
  44.   www     IN      A       192.168.100.100  
  45. # vi minitoo.com.zero                  //修改minitoo.com區域配置文件 
  46.  
  47. $TTL    86400  
  48. @               IN SOA  dnssvr.yye1.com.      dongjun.yye1.com. (  
  49.                                          42              ; serial (d. adams)  
  50.                                          3H              ; refresh  
  51.                                          15M             ; retry  
  52.                                          1W              ; expiry  
  53.                                          1D )            ; minimum  
  54.          IN      NS      dnssvr.yye1.com.  
  55. www     IN      A       192.168.100.100  
  56. # service named start       //啓動named服務  
  57. Starting named:                                            [  OK  ] 

 

2.若沒有可用的DNS服務器,則需要修改客戶機和服務器的hosts文件,添加域名www.yye1.comwww.minitoo.com的主機映射記錄。

  1. # vi /etc/hosts  
  2.    192.168.100.100         www.yye1.com www.minitoo.com 

2)爲虛擬主機準備網頁文檔。
1.創建/var/www/html/yye1.com文件夾,作爲網站www.yye1.com的根目錄。

  1. # mkdir -p /var/www/html/yye1.com 

2.創建/var/www/html/minitoo.com文件夾,作爲網站www.minitoo.com的根目錄。

  1. # mkdir -p /var/www/html/minitoo.com 

3.在以上兩個文件夾中建立index.html文件,編寫不同的網頁內容。

  1. # echo "<h1>www.yye1.com</h1>" >; /var/www/html/yye1.com/index.html  
  2. # echo "<h1>www.minitoo.com</h1>" >; /var/www/html/minitoo.com/index.html 

3)配置並啓動httpd服務器。
1.編寫獨立的虛擬主機配置文件,並通過Include配置加載到httpd.conf文件中。(爲目錄/var/www/html/minitoo添加Directory區域,並設置用戶訪問授權。)

  1. # vi /usr/local/httpd/conf/extra/httpd-vhosts.conf   //創建獨立的配置文件
  2.  
  3. NameVirtualHost 192.168.100.100  //設置虛擬主機監聽地址
  4.   
  5.   <VirtualHost  192.168.100.100> 
  6.           ServerAdmin [email protected] 
  7.           DocumentRoot "/var/www/html/yye1.com" 
  8.           <Directory "/var/www/html/yye1.com">  //設置目錄訪問權限
  9.                   Order allow,deny 
  10.                   Allow from all 
  11.           </Directory> 
  12.           ServerName yye1.com  //主機名
  13.           ServerAlias www.yye1.com  //主機別名
  14.           ErrorLog "/var/www/logs/yye1.com-error_log"  //錯誤日誌
  15.           CustomLog "/var/www/logs/yye1.com-access_log" common  //訪問日誌
  16.   </VirtualHost> 
  17.    
  18.   <VirtualHost  192.168.100.100> 
  19.           ServerAdmin [email protected]  //管理員郵箱
  20.           DocumentRoot "/var/www/html/minitoo.com"  //網站根目錄
  21.           <Directory "/var/www/html/minitoo.com">  //設置目錄訪問權限
  22.                   AuthName "minitoo.com Directory"  //定義受保護的領域名稱,該內容將在瀏覽器彈出的認證對話框中顯示
  23.                   AuthType Basic  //設置認證類型,Basic:基本認證
  24.                   AuthUserFile /usr/local/httpd/conf/.minitoopwd  //設置用於保存用戶賬戶、密碼的認證文件路徑
  25.                   require valid-user  //要求只有認證文件中的合法用戶才能訪問。其中alid-user表示所有合法用戶,若只授權給單個用戶,可改爲指定的用戶名(如:webadmin)
  26.                   Order allow,deny 
  27.                   Allow from all 
  28.           </Directory> 
  29.           ServerName minitoo.com 
  30.           ServerAlias www.minitoo.com 
  31.           ErrorLog "/var/www/logs/minitoo.com-error_log" 
  32.           CustomLog "/var/www/logs/minitoo.com-access_log" common 
  33. </VirtualHost> 
  34.  
  35.  
  36. # mkdir -p /var/www/logs        //創建日誌存放目錄 
  37. # vi /usr/local/httpd/conf/httpd.conf          //編輯主配置文件 
  38.     Include conf/extra/httpd-vhosts.conf  

2.使用htpasswd工具創建用戶認證數據文件,並添加授權用戶dongjun、minitoo。

  1. # /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.minitoopwd dongjun  
  2.     // -c:生成.minitoopwd文件,只在第一次生成文件時需要。  
  3.     New password:                                                 //輸入密碼  
  4.     Re-type new password:                                  //確認密碼  
  5.     Adding password for user dongjun             //添加dongjun用戶成功  
  6. # /usr/local/httpd/bin/htpasswd /usr/local/httpd/conf/.minitoopwd minitoo  
  7. New password:                                                    //輸入密碼  
  8. Re-type new password:                                     //確認密碼  
  9. Adding password for user minitoo                 //添加dongjun用戶成功 

3.重啓httpd服務器程序,並確認端口的監聽狀態。

  1. # service httpd restart  
  2. # netstat -anput  | grep 80  
  3. tcp        0      0 :::80                       :::*                        LISTEN      3844/httpd 

4)在客戶機中訪問虛擬主機。
1.分別訪問站點www.yye1.comwww.minitoo.com,應能看到不同的頁面內容。


p_w_picpath

2.在訪問站點www.minitoo.com時,會彈出用戶認證窗口,通過認證後才被允許訪問。

p_w_picpath

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