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.com和www.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.com和www.minitoo.com。(本例以CentOS5.4.x86_64爲平臺)
- # yum -y install bind bind-chroot caching-nameserver //安裝bind
- # cd /var/named/chroot/etc/
- # cp -p named.caching-nameserver.conf named.conf //生成全局配置文件
- # vi named.conf //編輯全局配置文件
- options {
- listen-on port 53 { 192.168.100.110; };
- ……
- allow-query { any; };
- allow-query-cache { any; };
- };
- ……
- view 100 {
- match-clients { any; };
- match-destinations { any; };
- recursion yes;
- include "/etc/named.zones";
- };
- # cp -p named.rfc1912.zones named.zones //生成主配置文件
- # vi named.zones //編輯主配置文件
- zone "yye1.com." IN {
- type master;
- file "yye1.com.zero";
- allow-update { none; };
- };
- zone "minitoo.com." IN {
- type master;
- file "minitoo.com.zero";
- allow-update { none; };
- };
- # cd ../var/named/ //切換區域配置文件目錄
- # cp -p named.zero yye1.com.zero //生成yye1.com區域配置文件
- # cp -p named.zero minitoo.com.zero //生成minitoo.com區域配置文件
- # vi yye1.com.zero //修改yye1.com區域配置文件
- $TTL 86400
- @ IN SOA dnssvr.yye1.com. dongjun.yye1.com. (
- 42 ; serial (d. adams)
- 3H ; refresh
- 15M ; retry
- 1W ; expiry
- 1D ) ; minimum
- IN NS dnssvr.yye1.com.
- dnssvr IN A 192.168.100.110
- www IN A 192.168.100.100
- # vi minitoo.com.zero //修改minitoo.com區域配置文件
- $TTL 86400
- @ IN SOA dnssvr.yye1.com. dongjun.yye1.com. (
- 42 ; serial (d. adams)
- 3H ; refresh
- 15M ; retry
- 1W ; expiry
- 1D ) ; minimum
- IN NS dnssvr.yye1.com.
- www IN A 192.168.100.100
- # service named start //啓動named服務
- Starting named: [ OK ]
2.若沒有可用的DNS服務器,則需要修改客戶機和服務器的hosts文件,添加域名www.yye1.com和www.minitoo.com的主機映射記錄。
- # vi /etc/hosts
- 192.168.100.100 www.yye1.com www.minitoo.com
2)爲虛擬主機準備網頁文檔。
1.創建/var/www/html/yye1.com文件夾,作爲網站www.yye1.com的根目錄。
- # mkdir -p /var/www/html/yye1.com
2.創建/var/www/html/minitoo.com文件夾,作爲網站www.minitoo.com的根目錄。
- # mkdir -p /var/www/html/minitoo.com
3.在以上兩個文件夾中建立index.html文件,編寫不同的網頁內容。
- # echo "<h1>www.yye1.com</h1>" >; /var/www/html/yye1.com/index.html
- # echo "<h1>www.minitoo.com</h1>" >; /var/www/html/minitoo.com/index.html
3)配置並啓動httpd服務器。
1.編寫獨立的虛擬主機配置文件,並通過Include配置加載到httpd.conf文件中。(爲目錄/var/www/html/minitoo添加Directory區域,並設置用戶訪問授權。)
- # vi /usr/local/httpd/conf/extra/httpd-vhosts.conf //創建獨立的配置文件
- NameVirtualHost 192.168.100.100 //設置虛擬主機監聽地址
- <VirtualHost 192.168.100.100>
- ServerAdmin [email protected]
- DocumentRoot "/var/www/html/yye1.com"
- <Directory "/var/www/html/yye1.com"> //設置目錄訪問權限
- Order allow,deny
- Allow from all
- </Directory>
- ServerName yye1.com //主機名
- ServerAlias www.yye1.com //主機別名
- ErrorLog "/var/www/logs/yye1.com-error_log" //錯誤日誌
- CustomLog "/var/www/logs/yye1.com-access_log" common //訪問日誌
- </VirtualHost>
- <VirtualHost 192.168.100.100>
- ServerAdmin [email protected] //管理員郵箱
- DocumentRoot "/var/www/html/minitoo.com" //網站根目錄
- <Directory "/var/www/html/minitoo.com"> //設置目錄訪問權限
- AuthName "minitoo.com Directory" //定義受保護的領域名稱,該內容將在瀏覽器彈出的認證對話框中顯示
- AuthType Basic //設置認證類型,Basic:基本認證
- AuthUserFile /usr/local/httpd/conf/.minitoopwd //設置用於保存用戶賬戶、密碼的認證文件路徑
- require valid-user //要求只有認證文件中的合法用戶才能訪問。其中alid-user表示所有合法用戶,若只授權給單個用戶,可改爲指定的用戶名(如:webadmin)
- Order allow,deny
- Allow from all
- </Directory>
- ServerName minitoo.com
- ServerAlias www.minitoo.com
- ErrorLog "/var/www/logs/minitoo.com-error_log"
- CustomLog "/var/www/logs/minitoo.com-access_log" common
- </VirtualHost>
- # mkdir -p /var/www/logs //創建日誌存放目錄
- # vi /usr/local/httpd/conf/httpd.conf //編輯主配置文件
- Include conf/extra/httpd-vhosts.conf
2.使用htpasswd工具創建用戶認證數據文件,並添加授權用戶dongjun、minitoo。
- # /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.minitoopwd dongjun
- // -c:生成.minitoopwd文件,只在第一次生成文件時需要。
- New password: //輸入密碼
- Re-type new password: //確認密碼
- Adding password for user dongjun //添加dongjun用戶成功
- # /usr/local/httpd/bin/htpasswd /usr/local/httpd/conf/.minitoopwd minitoo
- New password: //輸入密碼
- Re-type new password: //確認密碼
- Adding password for user minitoo //添加dongjun用戶成功
3.重啓httpd服務器程序,並確認端口的監聽狀態。
- # service httpd restart
- # netstat -anput | grep 80
- tcp 0 0 :::80 :::* LISTEN 3844/httpd
4)在客戶機中訪問虛擬主機。
1.分別訪問站點www.yye1.com和www.minitoo.com,應能看到不同的頁面內容。
2.在訪問站點www.minitoo.com時,會彈出用戶認證窗口,通過認證後才被允許訪問。