第八章
管理實務
一個網站的所有文件已按要求複製到httpd.conf中配置的網站根目錄中,請你分析在瀏覽器中看不到網站首頁的原因,並提出解決辦法。
一、配置網站的安全性
Apache提供基本的網站安全措施,如可以向特定的客戶端開放網站目錄的訪問權限,讓網頁需要認證才能訪問等。
1.允許在目錄中執行CGI程序,開放在目錄/home/hws/public_html/cgi下執行CGI程序
(1)方法一:
[root@vm ~]vi /etc/httpd/conf/httpd.conf
添加可以執行的腳本程序文件後綴名
AddHandler cgi-script .cgi .pl
Option ExecCGI
AllowOverride None
Order allow,deny
Allow from all
(2)方法二:
[root@vm ~]vi /etc/httpd/conf/httpd.conf
Options ExecCGI
SetHandler cgi-script
在瀏覽器地址欄輸入http://主機地址/hws/cgi/index.cgi來執行CGI程序
(3)方法三:
[root@vm ~]vi /etc/httpd/conf/httpd.conf
AddHandler必須生效
AddHandler cgi-script .cgi .pl
建立到CGI程序目錄的別名,引號中路徑名最後的/是必需的
ScriptAlias /hwscript/ "/home/hws/public_html/cgi /"
在瀏覽器地址欄輸入http://主機地址/hwscript/index.cgi來執行CGI程序
2.配置對指定網站目錄的訪問行為
(1)禁止用戶對目錄的訪問。
不允許來自IP地址是192.168.0.50和域vzone.com的用戶對賬戶hws的個人網站
中/home/hws/public_html/cgi目錄的訪問
[root@vm ~] vi /etc/httpd/conf/httpd.conf
Options ExecCGI
SetHandler cgi-script
AllowOverride None
Order allow,deny
allow from all
deny from 192.168.0.50
deny from vzone.com
(2)控製用戶對目錄的操作行為。
對於網站目錄/home/hws/public_html/pri,來自200.101.20.0/24的用戶隻能進行GET、POST
和OPTIONS操作,不允許進行其他操作。在httpd.conf中添加
[root@vm ~] vi /etc/httpd/conf/httpd.conf
Options FollowSymLinks
AllowOverride None
允許進行GET、POST和OPTIONS三個操作
Order allow,deny
allow from all
Limit >
禁止GET、POST和OPTIONS之外的其他操作
Order deny,allow
deny from 200.101.20.0/24
Limit >
3.瀏覽的網頁不存在時顯示通知信息
如果訪問的網頁不存在,而該目錄設置了Indexes屬性,此時將顯示目錄中的所有文件的名稱,這對係統安全有害。一般要求是取消目錄的Indexes屬性,當訪問的網頁不存在時,用ErrorDocument返回發生錯誤時的通知信息。
[root@vm ~] vi /etc/httpd/conf/httpd.conf
根據不同的錯誤類型,設置相應的返回信息或網頁
ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 404 “/cgi-bin/missing.pl”
ErrorDocument 402 http://www.hws.com/subscript.html
訪問出錯代碼的含義請參考HTTP協議相關資料
4.配置認證網頁
在網站中有些存放重要或私密數據的網頁需要訪問者提供合法的賬戶名和密碼才能訪問,這樣的網頁稱為認證網頁。
(1)建立存放認證網頁的目錄。
在/var/www/html中建立目錄authpages
[root@vm ~]mkdir /var/www/html/authpages
(2)把需要保護的網頁複製到/var/www/html/authpages中。
受保護的網頁已存放到/home/htmdocs目錄中
[root@vm ~]cp -r /home/htmdocs/*.* /var/www/html/authpages
(3)製作認證網頁的密碼文件。
在/var/www下建立密碼文件auth.passwd,為賬戶hungws設置訪問密碼
[root@vm ~]cd /var/www
[root@vm www]htpasswd -c auth.passwd hungws
在密碼文件auth.passwd中添加賬戶truster,密碼需要輸入兩次
[root@vm www]htpasswd auth.passwd truster
(4)設置受保護目錄的屬性。
顯示認證提示信息
AuthName "本網頁是認證網頁!!!"
設置認證類型:Basic隻驗證賬戶和密碼,Digest是基於MD5摘要的認證
AuthType Basic
指定密碼文件的存放路徑
AuthUserFile /var/www/auth.passwd
指定允許的賬戶,valid-user表示密碼文件中所有的賬戶,也可個別指定,如:
require hungws truster
require valid-user
(5)重新啟動Apache後,訪問/var/www/html/authpages目錄中的網頁時需要認證通過後才能顯示其內容。
5.讓用戶自己管理個人網頁的訪問控製
網頁的訪問控製都是在httpd.conf文件中設置的,這個文件隻能由root去修改,如果每個用戶的個人網頁要求都不相同,就會讓管理員不堪重負。使用.htaccess文件可以讓用戶自己管理其個人網頁,某個目錄下的.htaccess文件中的設置項可以替換在httpd.conf中關於這個目錄的設置項,而.htaccess可由用戶自己建立並修改。
下麵說明讓用戶Miller自己設置個人認證網頁。
(1)在httpd.conf中設置輔助配置文件。
[root@vm ~]vi /etc/httpd/conf/httpd.conf
設置輔助配置文件名
AccessFileName .htaccess
保護文件. htaccess和.htpasswd文件不被客戶端查看
Order allow,deny
Deny from all
(2)讓用戶定義的輔助配置文件中的設置可以覆蓋httpd.conf中對應的設置。
[root@vm ~]vi /etc/httpd/conf/httpd.conf
AllowOverride允許. htaccess中的配置取代httpd.conf的相應設置,其選項有:
Options:允許重設目錄屬性,如ExecCGI、FollowSymLinks、Indexes等
AuthConfig:僅網頁認證相關權限可覆蓋
Limit:允許用戶利用Allow、Deny、Order管理瀏覽權限
None:不可覆蓋,配置文件.htaccess設置的權限無效
ALL:全部權限都可以被覆蓋
AllowOverride AuthConfig
allow from all
(3)建立受保護的目錄和網頁。
以賬戶miller登錄,建立受保護目錄safety
[root@vm miller]$mkdir -p public_html/safety
把網頁文件複製到/home/miller/public_html/safety中,可按下麵方法建立測試網頁
[root@vm miller]$echo“這是用戶管理的認證網頁”> public_html/safety/index.html
(4)建立miller的網頁認證密碼文件。
建立密碼文件後,可以添加其他允許的用戶到密碼文件中,這時不要帶選項-c
[root@vm miller]$htpasswd -c /home/miller/myauth.passwd miller
(5)自定義輔助配置文件.htaccess。
[root@vm miller]$cd public_html/safety
[root@vm miller]$vi .htaccess
輸入類似下麵的內容
AuthName "本網頁是認證網頁!!!"
AuthType Basic
AuthUserFile /home/miller/ myauth.passwd
require valid-user
(6)在地址欄輸入http://主機名/~miller/safety/index.html時需要密碼才能訪問。
二、建立虛擬主機
利用一台物理主機的資源建立起的多個虛擬Web主機稱為虛擬主機。這種技術可以充分利用物理主機的各種資源。Apache支持基於IP地址、基於域名和基於端口的虛擬主機。
1.配置基於IP地址的虛擬主機
(1)為服務器主機的網卡配置多個IP地址。
兩個網站的IP地址分別是172.35.10.254和172.35.10.252
[root@vm ~]ifconfig eth0:0 172.35.10.254 netmask 255.255.0.0
[root@vm ~] ifconfig eth0:1 172.35.10.252 netmask 255.255.0.0
(2)為網站建立根目錄。
這裏假設網站的目錄分別是/var/www/html/site1和/var/www/html/site2,並把網站