Linux Apache Web 服務(wù)器(續(xù)三)
在這種情況下,在WWW上保證可以使用的唯一認(rèn)證機(jī)制是由HTTP本身提供 的。在標(biāo)準(zhǔn)的Apache服務(wù)器實(shí)現(xiàn)了這樣的認(rèn)證,它能控制哪些主機(jī)可能訪(fǎng)問(wèn)特定的站點(diǎn)或特點(diǎn)的站點(diǎn)的一部分。
這種認(rèn)證可以分為兩種,一種是基于主機(jī)的的認(rèn)證,另一種是基于用戶(hù)名/口令的認(rèn)證。由于互聯(lián)網(wǎng)上的決大多數(shù)用戶(hù)的IP地址是動(dòng)態(tài)獲得的,所以基于主機(jī)的認(rèn)證方式并不總適用。所以在大多數(shù)情況下,傳統(tǒng)的基于用戶(hù)名/口令的認(rèn)證方式更為現(xiàn)實(shí)。下面我們就對(duì)這兩種認(rèn)證的實(shí)現(xiàn)做一簡(jiǎn)要的介紹。
8.1 基于主機(jī)的認(rèn)證方式
在種認(rèn)證模式顧名思義,訪(fǎng)問(wèn)是用主機(jī)名或主機(jī)IP地址來(lái)控制的。支持這種認(rèn)證方式的是Apache的mod_access模塊,這個(gè)模塊缺省狀態(tài)下是被安裝了的。該模塊用以下幾種Apache命令來(lái)提供訪(fǎng)問(wèn)控制功能。
allow命令
語(yǔ)法:allow from host1 host2 host3 ...
這個(gè)命令定義了允許訪(fǎng)問(wèn)站點(diǎn)或目錄的主機(jī)清單。主機(jī)清單可以用以下幾
種形式表示:
ALL:代表所有主機(jī);
主機(jī)的全域名,如:www.mot.com;
主機(jī)的部分域名,如:.mot.com;
完整的IP地址,如:202.98.2.32;
部分IP地址,如:202.98
網(wǎng)絡(luò)地址/網(wǎng)絡(luò)掩碼對(duì),如:202.98.0.0/255.255.0.0
網(wǎng)絡(luò)地址/nn(CIDR定義),如:202.98.0.1/16
deny命令
語(yǔ)法:deny from host1 host2 host3 ...
這個(gè)命令定義了禁止訪(fǎng)問(wèn)站點(diǎn)或目錄的主機(jī)清單,其他與allow命令相似。
order命令
語(yǔ)法:order deny,allow | allow,deny
這個(gè)命令定義評(píng)價(jià)allow和deny命令的先后順序。
例如:
<Directory /home/httpd/html>
order deny,allow
deny from www.mot.com
allow all
</Directory>
這組命令設(shè)置了禁止www.mot.com訪(fǎng)問(wèn)/home/httpd/html目錄下的文件。
請(qǐng)大家注意,順序是先deny后allow,如果是:order allow,deny 那么,先允許所有的主機(jī)訪(fǎng)問(wèn),然后再禁止,這樣是無(wú)效的,所有主機(jī)仍然能夠訪(fǎng)問(wèn)。
8.2 基于用戶(hù)名/口令的認(rèn)證方式
這種認(rèn)證方式其實(shí)相當(dāng)簡(jiǎn)單,當(dāng)WWW瀏覽器請(qǐng)求經(jīng)此認(rèn)證模式保護(hù)的URL
時(shí),將會(huì)出現(xiàn)一個(gè)對(duì)話(huà)框,要求用戶(hù)鍵入用戶(hù)名和口令。用戶(hù)輸入后,傳給WWW服務(wù)器,WWW服務(wù)器驗(yàn)證它的正確性,如果正確,返回頁(yè)面,否則返回401錯(cuò)誤。要說(shuō)明的一點(diǎn)是,這種認(rèn)證模式是基本的,并不能用于安全性要求極高的場(chǎng)合。
Apache中有許多模塊可以支持這種認(rèn)證方式,下面我們就介紹一下最基本、最標(biāo)準(zhǔn)的mod_auth模塊。正如前面提到的一樣,mod_auth模塊使用存儲(chǔ)在文本文件中的用戶(hù)名、組名和口令來(lái)實(shí)現(xiàn)認(rèn)證。這種方法非常適合處理少量用戶(hù),它能工作得很好。如果你需要對(duì)大量的用戶(hù),如數(shù)以千計(jì)的用戶(hù)做認(rèn)證時(shí),這種方法的性能將急劇下降到不可忍受,所以當(dāng)這種情況下,就需要考慮使用mod_dbm模塊或mod_mysql模塊來(lái)獲得更好的性能。
實(shí)例一:需要用戶(hù)名和口令的訪(fǎng)問(wèn)控制
下面我們就一起來(lái)看一下如何建立需要用戶(hù)名/口令才能進(jìn)行訪(fǎng)問(wèn)的目錄。
基本情況: www.xxx.com
的站點(diǎn)有設(shè)置為:
DocumentRoot /home/httpd/html
AccessFileName .htaccess
AllowOverride All
需求:限制/home/httpd/html/backup/目錄的訪(fǎng)問(wèn),只允許用戶(hù)“super”以口令“fill-06”訪(fǎng)問(wèn)此目錄。
實(shí)現(xiàn)步驟:
使用htpasswd建立用戶(hù)文件
htpasswd –c /home/httpd/secr/.htpasswd super
此程序會(huì)詢(xún)問(wèn)用戶(hù)“super”的口令,你輸入“fill-06”,兩次生效。
建立.htaccess文件
用vi在/home/httpd/html/backup/目錄下建立一個(gè)文件.htaccess,寫(xiě)入
以下幾行:
AuthName My Friend Only (注:這個(gè)名字是任取的)
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
require user super
設(shè)置文件權(quán)限,確保Apache用戶(hù)有讀的權(quán)限
這樣就完成了設(shè)置工作,你可以試一試效果了。
實(shí)例二:允許一組用戶(hù)訪(fǎng)問(wèn)一個(gè)目錄
假設(shè),現(xiàn)在www.xxx.com想讓myfriend組中的mf1與mf2兩個(gè)用戶(hù)分別能
使用口令“mf001-1”“mf002-2”訪(fǎng)問(wèn)/home/httpd/html/backup/目錄。
實(shí)現(xiàn)步驟:
使用htpasswd建立用戶(hù)文件
htpasswd –c /home/httpd/secr/.htpasswd mf1
htpasswd –c /home/httpd/secr/.htpasswd mf2
建立組文件
用vi/home/httpd/secr/目錄下建立一個(gè)文件.htgroup,寫(xiě)入:
myfriend:mf1 mf2
建立.htaccess文件
用vi在/home/httpd/html/backup/目錄下建立一個(gè)文件.htaccess,寫(xiě)入
以下幾行:
AuthName My Friend Only
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
AuthGroupFile /home/httpd/secr/.htgroup
require group myfriend
配置工作到此結(jié)束,試一試吧!
實(shí)例三:混合使用基于主機(jī)與基于用戶(hù)名/口令的認(rèn)證方式
如果你除了只允許讓mf1與mf2兩個(gè)用戶(hù)訪(fǎng)問(wèn)外,還想禁止除www.mot.com
外的主機(jī)訪(fǎng)問(wèn)這個(gè)目錄的話(huà),就將/home/httpd/html/backup/.htaccess修改成為:
AuthName My Friend Only
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
AuthGroupFile /home/httpd/secr/.htgroup
require group myfriend
order deny,allow
deny from all
allow from www.mot.com
九、解讀Apache日志
當(dāng)你一步步地看到這里的時(shí)候,相信你的WWW站點(diǎn)已經(jīng)建好,并且已經(jīng)在
Internet上展現(xiàn)出來(lái)了。這時(shí)你可能就會(huì)關(guān)心誰(shuí)造訪(fǎng)過(guò)你的站點(diǎn),或者想知道你的Apache服務(wù)器現(xiàn)在的運(yùn)行狀態(tài)與性能如何。下面我們一起通過(guò)解讀Apache的日志來(lái)實(shí)現(xiàn)這個(gè)偉大的愿望。
9.1 盯著Apache服務(wù)器
Apache允許通過(guò)WWW監(jiān)視服務(wù)器的配置信息與運(yùn)行狀態(tài)。
1.觀看配置信息
如果你的Apache象缺省配置一樣加入了mod_info模塊的話(huà),你就可以通過(guò)訪(fǎng)問(wèn)http://localhost/server-info查看服務(wù)器信息。
2.使用狀態(tài)頁(yè)
如果你的Apache象缺省配置一樣加入了mod_status模塊的話(huà),你就可以
通過(guò)訪(fǎng)問(wèn)http://localhost/apache-status查看服務(wù)器的運(yùn)行狀態(tài)信息,其中包括:
¨ 服務(wù)器系統(tǒng)的當(dāng)前時(shí)間;
¨ 服務(wù)器最近一次重啟時(shí)間;
¨ 服務(wù)器啟動(dòng)后的運(yùn)行時(shí)間;
¨ 到目前為止服務(wù)的訪(fǎng)問(wèn)總數(shù);
¨ 到目前為止傳輸?shù)淖止?jié)總數(shù);
¨ 服務(wù)請(qǐng)求的子進(jìn)程數(shù);
¨ 空閑子進(jìn)程數(shù);
¨ 每個(gè)進(jìn)程狀態(tài)、子進(jìn)程服務(wù)的請(qǐng)求數(shù)以及該子進(jìn)程傳輸?shù)淖止?jié)總數(shù);
¨ 每秒平均請(qǐng)求數(shù)、每秒傳輸?shù)淖止?jié)數(shù)、每次請(qǐng)求平均傳輸字節(jié)數(shù);
¨ 目前每個(gè)子進(jìn)程CPU占用及Apache的總的CPU占用率;
¨ 當(dāng)前主機(jī)及處理的請(qǐng)求。
9.2 什么是日志文件
日志文件是Apache工作的記錄,Apache包括了mod_log_config模塊,它
用來(lái)記錄日志。在缺省情況下,它用通用日志格式CLF規(guī)范來(lái)寫(xiě)。
CLF日志文件內(nèi)對(duì)每個(gè)請(qǐng)求均有一個(gè)單獨(dú)行,形如:
host ident anthuser date request status bytes
其含義如下:
¨ host��客戶(hù)端主機(jī)的全稱(chēng)域名或IP地址;
¨ ident��存放客戶(hù)端報(bào)告的識(shí)別信息;
¨ authuser��如果是基于用戶(hù)名認(rèn)證的話(huà),值為用戶(hù)名;
¨ date��請(qǐng)求的日期與時(shí)間;
¨ request��客戶(hù)端的請(qǐng)求行;
¨ status��返回到客戶(hù)端的三們數(shù)字的HTTP狀態(tài)碼;
¨ bytes��除去HTTP頭標(biāo)外,返回給客戶(hù)端的字節(jié)數(shù)。
9.3 分析日志文件
有了日志文件后,我們可以利用UNIX的一些工具和一此專(zhuān)門(mén)的日志分析工具對(duì)日志文件進(jìn)行分析。
實(shí)例一:列出訪(fǎng)問(wèn)過(guò)本網(wǎng)站的主機(jī)名或IP:
對(duì)于這個(gè)需求,我們可以通過(guò)一個(gè)Unix的一個(gè)腳本語(yǔ)句來(lái)完成:
cat /var/log/httpd/access_log | awk ‘{print $1}'
用上面的方法雖然可以得到訪(fǎng)問(wèn)過(guò)本網(wǎng)站的主機(jī)名或IP,但是由于有些是多次訪(fǎng)問(wèn)的,我們希望在上面得到的結(jié)果的基礎(chǔ)上做一些優(yōu)化,使得列出的表中,每個(gè)主機(jī)只出現(xiàn)一次。我們可以使用:
cat /var/log/httpd/access_log | awk ‘{print $1}' | wc –l
3.當(dāng)然,我們可以根據(jù)需要選擇第三方提供日志分析工具甚至自己開(kāi)發(fā)一些日志分析工具來(lái)滿(mǎn)足我們的需求。常見(jiàn)的第三方日志分析工具有:WebTrends、Wusage、wwwstat、http-analyze、pwebstats、WebStat Explorer、AccessWatch。
9.4 一些提示
日志一方面是我們分析網(wǎng)站的第一手資料,一方面卻是吞噬大量磁盤(pán)空間的罪魁禍?zhǔn)?。所以別忘了定期轉(zhuǎn)儲(chǔ)或刪除一些老的日志文件。
十、Apache與代理服務(wù)器
代理服務(wù)器是位于客戶(hù)和客戶(hù)要訪(fǎng)問(wèn)的服務(wù)器之間的系統(tǒng)。當(dāng)客戶(hù)機(jī)使用URL請(qǐng)求訪(fǎng)問(wèn)遠(yuǎn)程資源時(shí),代理服務(wù)器接受該請(qǐng)求并取得該資源以滿(mǎn)足客戶(hù)機(jī)的請(qǐng)求。在通常情況下,代理服務(wù)器是客戶(hù)機(jī)的服務(wù)器,同時(shí)也是遠(yuǎn)程服務(wù)器的客戶(hù)。
代理服務(wù)器可以在自己的緩沖區(qū)中存儲(chǔ)被請(qǐng)求的內(nèi)容,當(dāng)這些信息再次被請(qǐng)求的時(shí)候,代理服務(wù)器就無(wú)需再?gòu)倪h(yuǎn)程服務(wù)器上取了,這樣代理服務(wù)器就減輕了網(wǎng)絡(luò)的瓶頸問(wèn)題。
Apache可以配置成為代理服務(wù)器。
10.1 前向代理服務(wù)器和逆向代理服務(wù)器
1.前向代理服務(wù)器
前向代理服務(wù)器通常位于用戶(hù)主機(jī)和要訪(fǎng)問(wèn)的遠(yuǎn)程網(wǎng)絡(luò)之間。它從遠(yuǎn)程服務(wù)器取得所要求的資源,然后返回給用戶(hù),同時(shí)存在磁盤(pán)上,以供下次使用。
在這種情況下,客戶(hù)端的主機(jī)知道它們正在使用代理服務(wù)器,因?yàn)槊總€(gè)主機(jī)都必須配置為使用代理服務(wù)器。
例如,必須告訴WWW瀏覽器使用代理服務(wù)器,它才能使用代理服務(wù)器。所有的遠(yuǎn)程請(qǐng)求都通過(guò)代理服務(wù)器傳輸。
這類(lèi)代理服務(wù)器也稱(chēng)為緩沖代理服務(wù)器。逆向服務(wù)器也可以緩沖數(shù)據(jù),但它的作用愉好與前向服務(wù)器相反。
前向代理服務(wù)器的結(jié)構(gòu)圖如下所示:
圖4 前向代理服務(wù)器
2.逆向代理服務(wù)器
逆向代理服務(wù)器位于互聯(lián)網(wǎng)資源前面,逆向服務(wù)器從原始服務(wù)器找到被請(qǐng)求的資源,并反它返回給用戶(hù)主機(jī)。
與前向代理服務(wù)器不同的是,逆向代理服務(wù)器的用戶(hù)并不知道它們連接的是代理服務(wù)器而不是資源服務(wù)器本身。其結(jié)構(gòu)如下圖所示:
圖5 逆向代理服務(wù)器
10.2 配置代理服務(wù)器
為了允許Apache作為代理服務(wù)器,需要將ProxyRequests設(shè)為On,然后根據(jù)你希望代理服務(wù)器做什么而增加什么附加配置。無(wú)論你希望做什么,你所選的代理配置都應(yīng)該放入一個(gè)特殊的<Directory>容器中。
<Directory proxy:*>
…
</Directory>
實(shí)例一:將私有IP網(wǎng)連到互聯(lián)網(wǎng)
假設(shè)私有網(wǎng)上只有一臺(tái)計(jì)算機(jī)被分配了互聯(lián)網(wǎng)上合法的IP地址,這臺(tái)計(jì)算
機(jī)運(yùn)行Apache代理服務(wù)器,ProxyRequest設(shè)置為On,并且不需要附加其他配置,所有請(qǐng)求均可由這臺(tái)代理服務(wù)器代理服務(wù)。
實(shí)例二:讓Apache允當(dāng)遠(yuǎn)程WWW站點(diǎn)的緩沖
第一步:將ProxyRequest設(shè)置為On
第二步:創(chuàng)建配置如下:
<Directory proxy:*>
CacheRoot /www/cache
CacheSize 1024
CacheMaxExpire 24
</Directory>
這里的意思是設(shè)置Cache目錄為/www/cache;大小為1024KB,即1MB;緩沖中的內(nèi)容在24小時(shí)后失效。
實(shí)例三:建立鏡像站點(diǎn)(其實(shí)這也就是所謂的逆向代理服務(wù)器)
第一步:將ProxyRequest設(shè)置為On
第二步:創(chuàng)建配置如下:
<Directory proxy:*>
ProxyPass / www.mot.com /
CacheRoot /www/cache
CacheDefaultExpire 24
</Directory>
10.3 一些提示
代理服務(wù)器,我們將會(huì)在后面的章節(jié)中詳細(xì)介紹,這里只是針對(duì)Apache的功能介紹的。用Apache作代理服務(wù)器的性能并不高,效果并不好。不建議使用。
相關(guān)文章
壓力測(cè)試工具Apache Bench實(shí)現(xiàn)原理及用法解析
這篇文章主要介紹了壓力測(cè)試工具Apache Bench實(shí)現(xiàn)原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
使用Cacls命令設(shè)置服務(wù)器文件訪(fǎng)問(wèn)權(quán)限
使用Cacls命令設(shè)置服務(wù)器文件訪(fǎng)問(wèn)權(quán)限...2007-01-01
Windows2003 下安裝 WinWebMail 3.6.3.1 完全攻略手冊(cè)
Windows2003 下安裝 WinWebMail 3.6.3.1 完全攻略手冊(cè)...2007-03-03
如何使win2003服務(wù)器自動(dòng)定時(shí)重啟的圖文教程
如何使win2003服務(wù)器自動(dòng)定時(shí)重啟的圖文教程...2007-03-03
前端實(shí)時(shí)通信的8種方式及其優(yōu)缺點(diǎn)和實(shí)現(xiàn)方式
這篇文章主要介紹了前端實(shí)時(shí)通信的8種方式及其優(yōu)缺點(diǎn)和實(shí)現(xiàn)方式,需要的朋友可以參考下2022-05-05
大型網(wǎng)站高并發(fā)解決方案分析之圖片服務(wù)器分離架構(gòu)
本文講述了大型網(wǎng)站高并發(fā)情況下圖片服務(wù)器分離的分析與解決方案,并給出了各種圖片服務(wù)器架構(gòu)方案及他們的優(yōu)缺點(diǎn)2018-03-03
IIS6 中"ASP 0201 錯(cuò)誤 無(wú)效的默認(rèn)腳本語(yǔ)言" 的解決方法
IIS6 中"ASP 0201 錯(cuò)誤 無(wú)效的默認(rèn)腳本語(yǔ)言" 的解決方法...2006-12-12

