不可不說(shuō)
          隨心所欲,無(wú)往不利!
          posts - 88,  comments - 92,  trackbacks - 0
          Apache服務(wù)器走到那里,unix/linux就跟到那里,這足以說(shuō)明在WEB服務(wù)器領(lǐng)域Apache的優(yōu)良性能與市場(chǎng)占有率
          這今天互聯(lián)網(wǎng)的大環(huán)境下,web服務(wù)已經(jīng)成為公司企業(yè)必不可少的業(yè)務(wù),大多數(shù)的安全問(wèn)題也跟隨而來(lái),攻擊重點(diǎn)也轉(zhuǎn)移為web攻擊,許多web與頗有價(jià)值的客戶服務(wù)與電子商業(yè)活動(dòng)結(jié)合在一起,這也是吸引惡意攻擊重要原因。

          先來(lái)了解下web所面臨的安全風(fēng)險(xiǎn)

          HTTP拒絕服務(wù)攻擊
          攻擊者通過(guò)某些手段使服務(wù)器拒絕對(duì)http應(yīng)答,這使Apache對(duì)系統(tǒng)資源(cup時(shí)間與內(nèi)存)需求巨增,最終造成系統(tǒng)變慢甚至完全癱瘓,Apache服務(wù)器最大的缺點(diǎn)是,它的普遍性使它成為眾矢之的,Apache服務(wù)器無(wú)時(shí)無(wú)刻不受到DoS攻擊威脅,主要有下邊幾種
          1.數(shù)據(jù)包洪水攻擊
          一種中斷服務(wù)器或本地網(wǎng)絡(luò)的方法是數(shù)據(jù)包洪水攻擊,它通常使用internet控制報(bào)文協(xié)議(ICMP,屬于網(wǎng)絡(luò)層協(xié)議)
          包或是udp包,在最簡(jiǎn)單的形式下,這些攻擊都是使服務(wù)器或網(wǎng)絡(luò)負(fù)載過(guò)重,這意味這攻擊者的網(wǎng)絡(luò)速度必須比目標(biāo)主機(jī)網(wǎng)絡(luò)速度要快,使用udp包的 優(yōu)勢(shì)是不會(huì)有任何包返回到黑客的計(jì)算機(jī)(udp效率要比tcp高17倍),而使用ICMP包的優(yōu)勢(shì)是攻擊者能讓攻擊更加富與變化,發(fā)送有缺陷的包會(huì)搞亂并 鎖住受害者的網(wǎng)絡(luò),目前流行的趨勢(shì)是攻擊者欺騙服務(wù)器,讓其相信正在受來(lái)自自身的洪水攻擊
          2.磁盤(pán)攻擊
          這是一種很不道德的攻擊,它不僅影響計(jì)算機(jī)的通信,還破壞其硬件,偽造的用戶請(qǐng)求利用寫(xiě)命令攻擊目標(biāo)計(jì)算機(jī)硬盤(pán),讓其超過(guò)極限,并強(qiáng)制關(guān)閉,結(jié)局很悲慘
          3.路由不可達(dá)
          通常DoS攻擊,集中在路由器上,攻擊者首先獲得控制權(quán)并操縱目標(biāo)機(jī)器,當(dāng)攻擊者能更改路由表?xiàng)l目時(shí)候,會(huì)導(dǎo)致整個(gè)網(wǎng)絡(luò)無(wú)法通信,這種攻擊很陰險(xiǎn),隱蔽,因?yàn)榫W(wǎng)絡(luò)管理員需要排除的網(wǎng)絡(luò)不通原因很多,其中一些原因需要詳細(xì)分辨
          4.分布式拒絕服務(wù)攻擊
          這也是最具有威脅的DDoS攻擊,名稱(chēng)很容易理解,簡(jiǎn)單說(shuō)就是群歐,很多客戶機(jī)同時(shí)單條服務(wù)器,你會(huì)發(fā)現(xiàn)你將傷痕累累,Apache服務(wù)器特別容 易受到攻擊,無(wú)論是DDos還是隱藏來(lái)源的攻擊,因?yàn)锳pache無(wú)處不在,特別是為Apache特意打造的病毒(特選SSL蠕蟲(chóng)),潛伏在許多主機(jī)上, 攻擊者通過(guò)病毒可以操縱大量被感染的機(jī)器,對(duì)特定目標(biāo)發(fā)動(dòng)一次浩大的DDoS攻擊,通過(guò)將蠕蟲(chóng)散播到大量主機(jī),大規(guī)模的點(diǎn)對(duì)點(diǎn)攻擊得以進(jìn)行,除非你不提供 服務(wù),要不然幾乎無(wú)法阻止這樣的攻擊,這種攻擊通常會(huì)定位到大型的網(wǎng)站上。

          緩沖區(qū)溢出,這種攻擊很普遍,攻擊者利用CGI程序編寫(xiě)一些缺陷程序偏離正常的流程,程序使用靜態(tài)的內(nèi)存分配,攻擊者就可以發(fā)送一個(gè)超長(zhǎng)的請(qǐng)求使緩沖區(qū)溢出,比如,一些perl編寫(xiě)的處理用戶請(qǐng)求的網(wǎng)關(guān)腳本,一但緩沖區(qū)溢出,攻擊者就可以執(zhí)行惡意指令

          非法獲取root權(quán)限
          如果Apache以root權(quán)限運(yùn)行,系統(tǒng)上一些程序的邏輯缺陷或緩沖區(qū)溢出漏洞,會(huì)讓攻擊者很容易在本地系統(tǒng)獲取linux服務(wù)器上的管理者權(quán) 限,在一些遠(yuǎn)程情況下,攻擊者會(huì)利用一些以root身份執(zhí)行的有缺陷的系統(tǒng)守護(hù)進(jìn)程來(lái)取得root權(quán)限,或利用有缺陷的服務(wù)進(jìn)程漏洞來(lái)取得普通用戶權(quán)限, 以遠(yuǎn)程登陸,進(jìn)而控制整個(gè)系統(tǒng)。

          這邊這些都是服務(wù)將會(huì)遇到的攻擊手段,下邊來(lái)說(shuō),如何打造安全的Apache服務(wù)器
          如果你能遵守下邊這些建議,那么你將得到一臺(tái)相對(duì)安全的apache服務(wù)器

          一:勤打補(bǔ)丁
          你必須要相信這個(gè)是最有用的手段,緩沖區(qū)溢出等漏洞都必須使用這種手段來(lái)防御,勤快點(diǎn)相信對(duì)你沒(méi)有壞處
          在http:www.apache.org上最新的changelog中都寫(xiě)有:bug fix ,security bug fix的字樣,做為負(fù)責(zé)任的管理員要經(jīng)常關(guān)注相關(guān)漏洞,及時(shí)升級(jí)系統(tǒng)添加補(bǔ)丁。使用最新安全版本對(duì)加強(qiáng)apache至關(guān)重要

          二:隱藏和偽裝Apache的版本
          打亂攻擊者的步驟,給攻擊者帶來(lái)麻煩,相信是管理員愿意看到的。軟件的漏洞信息和版本是相關(guān)的,在攻擊者收集你服務(wù)軟件信息時(shí)候給與迷惑是個(gè)不錯(cuò)的選擇,何況版本號(hào),對(duì)攻擊者來(lái)說(shuō)相當(dāng)與GPS定位一樣重要
          默認(rèn)情況,系統(tǒng)會(huì)把a(bǔ)pache版本模塊都顯示出來(lái)(http返回頭),如果列舉目錄的話,會(huì)顯示域名信息(文件列表正文),去除Apache版本號(hào)的方法是修改配置文件,找到關(guān)鍵字,修改為下邊
          ServerSignature off
          ServerTokens prod

          通過(guò)分析web服務(wù)器類(lèi)型,大致可以推測(cè)操作系統(tǒng)類(lèi)型,win使用iis,linux普遍apache,默認(rèn)的Apache配置里沒(méi)有任何信息保 護(hù)機(jī)制,并且允許目錄瀏覽,通過(guò)目錄瀏覽,通常可以得到類(lèi)似“apache/1.37 Server at apache.linuxforum.net Port 80”或“apache/2.0.49(unix)PHP/4.3.8”的信息
          通過(guò)修改配置文件中的ServerTokens參數(shù),可以將Apache的相關(guān)信息隱藏起來(lái),如果不行的話,可能是提示信息被編譯在程序里了,要隱藏需要修改apache的源代碼,然后重新編譯程序,以替換內(nèi)容
          編輯ap_release.h文件,
          修改"#define AP_SERVER_BASEPRODUCT""Apache"""為
          "#define AP_SERVER_BASEPRODUCT""Microsoft-IIS/5.0""
          編輯os/unix/os.h文件
          修改"#define PLATFORM""Unix"""為
          "#define PLATFORM"'Win32"
          修改完成后,重新編譯,安裝apache,在修改配置文件為上邊做過(guò)的,再次啟動(dòng)apache后,用工具掃描,發(fā)現(xiàn)提示信息中已經(jīng)顯示為windows操作系統(tǒng)了
          順便說(shuō)下,現(xiàn)在這個(gè)論壇,就有點(diǎn)不太講究,這是論壇錯(cuò)誤的返回信息,看了有點(diǎn)汗地感覺(jué)
          Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 mod_ssl/2.2.8 OpenSSL/0.9.8g Server at forum.ubuntu.org.cn Port 80

          這個(gè)等于告訴惡意用戶很多有用信息,雖然說(shuō)不算開(kāi)了門(mén),但等于被告訴了門(mén)在那里,還是相當(dāng)危險(xiǎn)的

          三:建立安全的目錄結(jié)構(gòu)apache服務(wù)器包括四個(gè)目錄結(jié)構(gòu)
          ServerRoot #保存配置文件,二進(jìn)制文件與其他服務(wù)器配置文件
          DocumentRoot #保存web站點(diǎn)內(nèi)容,包括HTML文件和圖片等
          ScripAlias #保存CGI腳本
          Customlog 和 Errorlog #保存日志和錯(cuò)誤日志
          建議的目錄結(jié)構(gòu)為,以上四種目錄相互獨(dú)立并且不存在父子邏輯關(guān)系
          注:
          ServerRoot目錄只能為root用戶訪問(wèn)
          DocumentRoot目錄應(yīng)該能夠被管理web站點(diǎn)內(nèi)容的用戶訪問(wèn)和使用apache服務(wù)器的apache用戶與組訪問(wèn)
          ScripAlias目錄應(yīng)該只能被CGI開(kāi)發(fā)人員和apache用戶訪問(wèn)
          Customlog 和 Errorlog只能被root訪問(wèn)
          下邊是一個(gè)安全目錄結(jié)構(gòu)的事例
          +-------/etc/
          |
          | +----/http (ServerRoot)
          | +----/logs (Customlog 和 Errorlog)
          |
          +-------var/www
          |
          | +---/cgi-bin (ScripAlias)
          | +---/html (DocumentRoot)

          這樣的目錄結(jié)構(gòu)是比較安全的,因?yàn)槟夸浿g獨(dú)立,某個(gè)目錄權(quán)限錯(cuò)誤不會(huì)影響到其他目錄

          四:為apache使用專(zhuān)門(mén)的用戶與組
          按照最小特權(quán)的原則,需要給apache分配一個(gè)合適的權(quán)限,讓其能夠完成web服務(wù)
          注:
          最小特權(quán)原則是系統(tǒng)安全中最基本的原則之一,限制使用者對(duì)系統(tǒng)及數(shù)據(jù)進(jìn)行存取所需要的最小權(quán)限,保證用戶可以完成任務(wù),同時(shí)也確保被竊取或異常操作所造成的損失

          必須保證apache使用一個(gè)專(zhuān)門(mén)的用戶與組,不要使用系統(tǒng)預(yù)定的帳戶,比如nobody用戶與nogroup組
          因?yàn)橹挥衦oot用戶可以運(yùn)行apache,DocumentRoot應(yīng)該能夠被管理web站點(diǎn)內(nèi)容的用戶訪問(wèn)和使用apache服務(wù)器的 apache用戶與組訪問(wèn),例如,希望“test”用戶在web站點(diǎn)發(fā)布內(nèi)容,并且可以以httpd身份運(yùn)行apache服務(wù)器,可以這樣設(shè)定
          groupadd webteam
          usermod -G webteam test
          chown -R httpd.webteam /www/html
          chmod -R 2570 /www/htdocs
          只有root能訪問(wèn)日志,推薦這樣的權(quán)限
          chown -R root.root /etc/logs
          chown -R 700 /etc/logs

          五:web目錄的訪問(wèn)策略
          對(duì)于可以訪問(wèn)的web目錄,要使用相對(duì)保守的途徑進(jìn)行訪問(wèn),不要讓用戶查看任何目錄索引列表
          禁止使用目錄索引:
          apache在接到用戶對(duì)一個(gè)目錄的訪問(wèn)時(shí),會(huì)查找DirectoryIndex指令指定的目錄索引文件,默認(rèn)為index.html,如果該文件不存在,那么apache會(huì)創(chuàng)建動(dòng)態(tài)列表為用戶顯示該目錄的內(nèi)容,這樣就會(huì)暴露web站點(diǎn)結(jié)構(gòu),因此需要修改配置文件禁止顯示動(dòng)態(tài)目錄索引,修改httpd.conf
          Options -Indexes FollowSymLinks
          Options指令通知apache禁止使用目錄索引,F(xiàn)ollowSymLinks表示不允許使用符號(hào)連接。
          禁止默認(rèn)訪問(wèn):
          要的安全策略必須要禁止默認(rèn)訪問(wèn)的存在,只對(duì)指定的目錄開(kāi)放權(quán)限,如果允許訪問(wèn)/var/www/html目錄,使用如下設(shè)定
          Order deny,allow
          Allow from all
          禁止用戶重載:
          為了禁止用戶對(duì)目錄配置文件(htaccess)進(jìn)行重載(修改),可以這樣設(shè)定
          AllowOverride None

          六:apache服務(wù)器訪問(wèn)控制
          apache的access.conf文件負(fù)責(zé)設(shè)置文件的訪問(wèn)權(quán)限,可以實(shí)現(xiàn)互聯(lián)網(wǎng)域名和ip地址的訪問(wèn)控制
          如允許192.168.1.1到192.168.1.254的主機(jī)訪問(wèn),可以這樣設(shè)定
          order deny,allow
          deny from all
          allow from pair 192.168.1.0/255.255.255.0

          七:apache服務(wù)器的密碼保護(hù)
          .htaccess文件是apache上的一個(gè)設(shè)置文件,它是一個(gè)文本文件,.htaccess文件提供了針對(duì)目錄改變配置的方法
          既通過(guò)在一個(gè)特定的文檔目錄中放置一個(gè)包含一個(gè)或多個(gè)指令的文件(.htaccess文件),以作用于此目錄和子目錄。
          .htaccess的功能包括設(shè)置網(wǎng)頁(yè)密碼,設(shè)置發(fā)生錯(cuò)誤時(shí)出現(xiàn)的文件,改變首業(yè)的文件名(如,index.html),禁止讀取文件名,重新導(dǎo)向文件,加上MIME類(lèi)別,禁止目錄下的文件等。
          注:.htaccess是一個(gè)完整的文件名,不是***.htaccess或其他格式,在/abc目錄下放置一個(gè).htaccess文件,那么/abc與它的子目錄都會(huì)被這個(gè)文件影響,但/index.html不會(huì)被影響

          .htaccess的建立和使用比較復(fù)雜點(diǎn),如果感興趣的朋友可以回帖發(fā)問(wèn),這里就不 具體寫(xiě)出來(lái)了,這種保護(hù)要比某些程序?qū)崿F(xiàn)的保護(hù)安全,那種方法可以通過(guò)被猜測(cè)方法獲取密碼,用.htaccess很難被破解,但文本方式的驗(yàn)證會(huì)比較慢, 對(duì)少量用戶沒(méi)影響,但對(duì)大量用戶就必須使用帶數(shù)據(jù)模塊的驗(yàn)證了,這需要編譯源代碼時(shí)候開(kāi)啟模塊,默認(rèn)是不開(kāi)啟的

          八:讓apache運(yùn)行在“監(jiān)牢”中
          “監(jiān)牢”的意思是指通過(guò)chroot機(jī)制來(lái)更改某個(gè)軟件運(yùn)行時(shí)所能看到的根目錄,簡(jiǎn)單說(shuō),就是被限制在指定目錄中,保證軟件只能對(duì)該目錄與子目錄文件有所動(dòng)作,從而保證整個(gè)服務(wù)器的安全,即使被破壞或侵入,損傷也不大
          以前,unix/linux上的daemon都是以root權(quán)限啟動(dòng)的,當(dāng)時(shí),這是一件理所當(dāng)然的事情,像apache這樣的服務(wù)器軟件,需要綁 定到80端口上來(lái)監(jiān)聽(tīng)請(qǐng)求,而root是唯一有這種權(quán)限的用戶,隨著攻擊手段和強(qiáng)度的增加,這樣會(huì)使服務(wù)器受到相當(dāng)大的威脅,一但被利用緩沖區(qū)溢出漏洞, 就可以控制整個(gè)系統(tǒng)。現(xiàn)在的服務(wù)器設(shè)計(jì)通常以root啟動(dòng),然后進(jìn)程放棄root權(quán)限,改為某個(gè)低級(jí)的帳號(hào)運(yùn)行。這種方式顯然會(huì)降低對(duì)系統(tǒng)的危害,但攻擊 者還是會(huì)尋找漏洞提升權(quán)限,即使無(wú)法獲得root權(quán)限,也可以刪除文件,涂改主頁(yè)等
          為了進(jìn)一步提高系統(tǒng)安全性,linux內(nèi)核引入chroot機(jī)制,chroot是內(nèi)核中的一個(gè)系統(tǒng)調(diào)用,軟件可以通過(guò)調(diào)用函數(shù)庫(kù)的chroot 函數(shù),來(lái)更改某個(gè)進(jìn)程所能見(jiàn)到的跟目錄,比如,apache軟件安裝在/usr/local/httpd目錄,以root啟動(dòng)apache,這個(gè)root 權(quán)限的父進(jìn)程會(huì)派生數(shù)個(gè)以nobody權(quán)限運(yùn)行的子進(jìn)程,父進(jìn)程監(jiān)聽(tīng)80端口,然后交給某個(gè)子進(jìn)程處理,這時(shí)候子進(jìn)程所處的目錄續(xù)承父進(jìn)程,即/usr /local/httpd目錄,但是一但目錄權(quán)限設(shè)定錯(cuò)誤,被攻擊的apache子進(jìn)程可以訪問(wèn)/usr/local , /usr ,/tmp甚至整個(gè)文件系統(tǒng),因?yàn)閍pache進(jìn)程所處的跟目錄仍然是整個(gè)文件系統(tǒng)的跟目錄,如果可以用chroot將apache限制在/usr /local/httpd/下,那么apache所存取的文件都被限制在/usr/local/httpd下,創(chuàng)建chroot監(jiān)牢的作用就是將進(jìn)程權(quán)限 限制在文件目錄樹(shù)下,保證安全。
          如果自己手動(dòng)apache的監(jiān)牢,將是很煩瑣和復(fù)雜的工作,需要牽扯到庫(kù)文件,這里可以使用jail包來(lái)簡(jiǎn)化監(jiān)牢的實(shí)現(xiàn)
          jail的官方網(wǎng)站為: 有興趣可以逛逛
          這里也不寫(xiě)出具體的創(chuàng)建過(guò)程稍微麻煩,如果對(duì)安全有需要的話,請(qǐng)回帖,會(huì)及時(shí)補(bǔ)上

          九:apache服務(wù)器防范Dos
          apache服務(wù)經(jīng)常會(huì)碰到Dos攻擊,防范的主要手段是通過(guò)軟件,apahce Dos Evasive Maneuvers Module
          來(lái)實(shí)現(xiàn)的,它是一款mod_access的代替軟件,可以對(duì)抗DoS攻擊,該軟件可以快速拒絕來(lái)自相同地址對(duì)同一URL的重復(fù)請(qǐng)求,通過(guò)查詢(xún)內(nèi)部一張各子進(jìn)程的哈希表來(lái)實(shí)現(xiàn)
          可以到網(wǎng)址:http://online/.securityfocus.com/tools/ 上下載軟件

          十:減少CGI和SSI風(fēng)險(xiǎn)
          CGI腳本的漏洞已經(jīng)成為WEB服務(wù)器的首要安全隱患,通常是程序編寫(xiě)CGI腳本產(chǎn)生了許多漏洞,控制CGI的漏洞除了在編寫(xiě)時(shí)候注意對(duì)輸入數(shù)據(jù) 的合法檢查,對(duì)系統(tǒng)調(diào)用的謹(jǐn)慎使用等因素外,首先使用CGI程序所有者的ID來(lái)運(yùn)行這些程序,即使被漏洞危害也僅限于該ID能訪問(wèn)的文件,不會(huì)對(duì)整個(gè)系統(tǒng) 帶來(lái)致命的危害,因此需要謹(jǐn)慎使用CGI程序。
          1.3版的apache集成了suEXEC程序,可以為apache提供CGI程序的控制支持,可以把suEXEC看做一個(gè)包裝器,在Apache接到CGI程序的調(diào)用請(qǐng)求后,把這個(gè)請(qǐng)求交給suEXEC來(lái)負(fù)責(zé)完成具體調(diào)用,并從suEXEC返回結(jié)果,suEXEC可以解決一些安全問(wèn)題,但會(huì)影響速度
          如果是對(duì)安全性要求很高時(shí)候,建議使用suEXEC,此外還有一個(gè)軟件CGIWrap,它的安全性要高與suEXEC

          減少SSI腳本風(fēng)險(xiǎn),如果用exec等SSI命令運(yùn)行外部程序,也會(huì)存在類(lèi)似CGI腳本風(fēng)險(xiǎn),除了內(nèi)部調(diào)試程序時(shí),應(yīng)使用
          option命令禁止其使用:
          Option IncludesNOEXEC

          十一:使用ssl加固Apache
          使用具有SSL功能的服務(wù)器,可以提高網(wǎng)站敏感頁(yè)的安全性能,SSL工作與TCP/IP協(xié)議和HTTP協(xié)議之間
          SSL可以加密互聯(lián)網(wǎng)上傳遞的數(shù)據(jù)流,提供身份驗(yàn)證,在線購(gòu)物而不必?fù)?dān)心別人竊取信用卡信息,在基于電子商務(wù)和基于web郵件的地方非常重要。
          SSL的應(yīng)用相對(duì)還是比較麻煩的,有需要的話,可以發(fā)貼或查看資料,這幾就不多寫(xiě),篇幅不夠
          posted @ 2009-09-03 18:01 藍(lán)劍 閱讀(13677) | 評(píng)論 (1)編輯 收藏
          從網(wǎng)上找到的,不知道好不好用,先存上,以后有機(jī)會(huì)測(cè)試一下。
          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
           
          public class MyEclipseGen {
          private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.";
           
          public String getSerial(String userId, String licenseNum) {
             java.util.Calendar cal 
          = java.util.Calendar.getInstance();
             cal.add(
          13);
             cal.add(
          6-1);
             java.text.NumberFormat nf 
          = new java.text.DecimalFormat("000");
             licenseNum 
          = nf.format(Integer.valueOf(licenseNum));
             String verTime 
          = new StringBuilder("-").append(
               
          new java.text.SimpleDateFormat("yyMMdd").format(cal.getTime()))
               .append(
          "0").toString();
             String type 
          = "YE3MP-";
             String need 
          = new StringBuilder(userId.substring(01)).append(type)
               .append(
          "300").append(licenseNum).append(verTime).toString();
             String dx 
          = new StringBuilder(need).append(LL).append(userId)
               .toString();
             
          int suf = this.decode(dx);
             String code 
          = new StringBuilder(need).append(String.valueOf(suf))
               .toString();
             
          return this.change(code);
          }
           
          private int decode(String s) {
             
          int i;
             
          char[] ac;
             
          int j;
             
          int k;
             i 
          = 0;
             ac 
          = s.toCharArray();
             j 
          = 0;
             k 
          = ac.length;
             
          while (j < k) {
              i 
          = (31 * i) + ac[j];
              j
          ++;
             }
             
          return Math.abs(i);
          }
           
          private String change(String s) {
             
          byte[] abyte0;
             
          char[] ac;
             
          int i;
             
          int k;
             
          int j;
             abyte0 
          = s.getBytes();
             ac 
          = new char[s.length()];
             i 
          = 0;
             k 
          = abyte0.length;
             
          while (i < k) {
              j 
          = abyte0[i];
              
          if ((j >= 48&& (j <= 57)) {
               j 
          = (((j - 48+ 5% 10+ 48;
              } 
          else if ((j >= 65&& (j <= 90)) {
               j 
          = (((j - 65+ 13% 26+ 65;
              } 
          else if ((j >= 97&& (j <= 122)) {
               j 
          = (((j - 97+ 13% 26+ 97;
              }
              ac[i] 
          = (char) j;
              i
          ++;
             }
             
          return String.valueOf(ac);
          }
           
          public MyEclipseGen() {
             
          super();
          }
           
          public static void main(String[] args) {
             
          try {
              System.out.println(
          "please input register name:");
              BufferedReader reader 
          = new BufferedReader(new InputStreamReader(
                System.in));
              String userId 
          = null;
              userId 
          = reader.readLine();
              MyEclipseGen myeclipsegen 
          = new MyEclipseGen();
              String res 
          = myeclipsegen.getSerial(userId, "5");
              System.out.println(
          "Serial:" + res);
              reader.readLine();
             } 
          catch (IOException ex) {
             }
          }
          }

          我計(jì)算出來(lái)的:oLR8ZC-855550-67595356781722504
          posted @ 2008-12-18 09:22 藍(lán)劍 閱讀(2254) | 評(píng)論 (1)編輯 收藏
          Firestorm是一個(gè)用JAVA寫(xiě)的代碼生成工具,可以替你節(jié)省很多的代碼量,可以說(shuō)同類(lèi)軟件中功能最強(qiáng)的一個(gè)。

          Firestorm是一個(gè)用JAVA寫(xiě)的代碼生成工具,可以替你節(jié)省很多的代碼量,可以說(shuō)同類(lèi)軟件中功能最強(qiáng)的一個(gè)。
          你可以在網(wǎng)上下載到最新的2.3試用版本,同時(shí)網(wǎng)站會(huì)發(fā)給你一個(gè)試用的license文件。既然是試用,
          那么在使用上肯定有一定的限制。主要限制有3個(gè):
              1.只能最多生成5張表的DAO;
              2.有時(shí)間限制;
              3.不能自己定制代碼生成;

          為了能夠更好的試用這個(gè)軟件,我得改改它,去掉這些限制。將firestorm.jar打開(kāi)后,可以看到它使用了
          混淆器進(jìn)行代碼保護(hù),不同于大多數(shù)的混淆器生成的文件,它的class和package大部分都是以關(guān)鍵字來(lái)命名,
          所以如果你用JAD之類(lèi)的工具把它反編譯后是不能再把它編譯成功,編譯器會(huì)提示出錯(cuò)誤。

          反編譯后,找到幾個(gè)有關(guān)注冊(cè)的關(guān)鍵文件,發(fā)現(xiàn)它使用的是數(shù)字簽名技術(shù)來(lái)做的保護(hù),所以想逆向找出
          注冊(cè)碼的計(jì)算方法是不可行的了,只能通過(guò)修改文件的方法來(lái)破解。通常我們是先反編譯,然后再修改
          反編譯后生成的原文件,最后再重新編譯。但是由于文件名和包名的關(guān)系我們無(wú)法進(jìn)行編譯,除非把它的
          這些‘非法'的文件名和包名全部改成符合java語(yǔ)言規(guī)范的名稱(chēng),由于類(lèi),包眾多,互相調(diào)用也很
          頻繁,所以這種方法幾乎不可能的。

          另外一種方法就是使用softice之類(lèi)的調(diào)試軟件來(lái)破解,不過(guò)這個(gè)脫離JAVA的范疇,這里不做討論。

          還有一種方法可能很少有人用,就是先反編譯得到原文件,然后找到關(guān)鍵的方法后修改它的字節(jié)碼,
          也就是class文件,這中方法往往需要你知道一些有關(guān)CLASS文件格式方面的知識(shí)(如果沒(méi)有也不用擔(dān)心),
          有許多的處理字節(jié)碼的工具可以幫助你,比較流行的這類(lèi)工具主要有:apache.org的BCEL;
          jboss.com的javassist;objectweb.org的asm。都是出身名門(mén)哈。這3個(gè)工具各有特點(diǎn),
          這次我選用javassist,因?yàn)樗薷腸lass文件最方便,甚至不需要懂得字節(jié)碼和class文件格式。

          讓我們來(lái)看看具體步驟:


          step1:
              下載并安裝FIRESTORM。
          step2:
              反編譯jar文件,閱讀代碼,找到關(guān)鍵的方法。當(dāng)然,我這里寫(xiě)出來(lái),你就不用再麻煩了。(其實(shí)這步是最
              麻煩的)。
              找到com.codefutures.if.if文件中的方法
                  public static boolean a(java.security.PublicKey publickey,
                          byte abyte0[], byte abyte1[])
                      throws java.security.NoSuchAlgorithmException,
                      java.security.NoSuchProviderException,
                      java.security.InvalidKeyException,
                      java.security.SignatureException {
                      java.security.Signature signature = java.security.Signature.getInstance("SHA1withDSA", "SUN");
                      signature.initVerify(publickey);
                      signature.update(abyte0);
                      return signature.verify(abyte1);
                  }

              這個(gè)方法是對(duì)公鑰進(jìn)行檢驗(yàn),修改的思路就是直接讓他返回一個(gè)true.

          step2:
              收到firestorm.license文件后不要急著安裝,先修改如下:
                  <custom-codegen>no</custom-codegen>
                      改為
                  <custom-codegen>yes</custom-codegen>

                  <restriction>5</restriction>
                      改為
                  <restriction>none</restriction>

                  <expiry-date>[日期]</expiry-date>
                      改為
                  <expiry-date>never</expiry-date>

              修改后放到firestorm的安裝路徑的license目錄。

          step3:
              修改com.codefutures.if.if的class文件.這里我們需要寫(xiě)一個(gè)小程序來(lái)完成實(shí)現(xiàn):
                  import javassist.ClassPool;
                  import javassist.CtClass;
                  import javassist.CtMethod;


                  public class Test {
                      
                      public static void main(String[] args) throws Exception {
                          ClassPool pool = ClassPool.getDefault();

                          //設(shè)置目標(biāo)類(lèi)的路徑,確保能夠找到需要修改的類(lèi),這里我指向firestorm.jar
                          //解包后的路徑
                          pool.insertClassPath("d:/work/firestorm/firestorm") ;    
                          
                          //獲得要修改的類(lèi)
                          CtClass cc = pool.get("com.codefutures.if.if");
                          //設(shè)置方法需要的參數(shù)
                          CtClass[] param = new CtClass[3] ;                
                          param[0] = pool.get("java.security.PublicKey") ;
                          param[1] = pool.get("byte[]") ;
                          param[2] = pool.get("byte[]") ;

                          //得到方法
                          CtMethod m = cc.getDeclaredMethod("a", param);
                          //插入新的代碼
                          m.insertBefore("{return true ;}") ;
                          //保存到文件里
                          cc.writeFile() ;
                      }
                  }

              
              修改完后,你可以反編譯修改過(guò)的的class文件,看看代碼是否加入成功。

          step4:
              將所有的class文件重新打包成firestorm.jar,然后替換
              [firestorm安裝路徑]/lib/firestorm.jar,再啟動(dòng)firestorm即可。
          posted @ 2008-09-18 15:26 藍(lán)劍 閱讀(7699) | 評(píng)論 (0)編輯 收藏
          隨著在線人數(shù)的不斷增加,WDA的附件每天增量很多,流量越來(lái)越大,從MRTG監(jiān)控到,忙時(shí)達(dá)到10M,導(dǎo)致空間商限制了WDA的流量。
          分析流量大的原因,主要是因?yàn)樯蟼骱拖螺d附件占用了帶寬,找了很多解決辦法,終于用apache的bw_mod模塊解決了。
          bw_mod是for apache2的,首先到http://apache.ivn.cl/下載最新的bw_mod模塊,目前是bw_mod v0.6。
             然后運(yùn)行apxs -i -a -c bw_mod-0.6.c,apxs請(qǐng)用絕對(duì)路徑。此命令會(huì)自動(dòng)安裝bw_mod,并在apache配置文件httpd.conf自動(dòng)加入
          LoadModule bw_module          modules/bw_mod-0.6.so
          安裝完成后,會(huì)在modules目錄下生成bw_mod-0.6.so 文件。
          如果安裝過(guò)程沒(méi)有出錯(cuò)的話,就可以開(kāi)始進(jìn)行設(shè)置了。
          在httpd.conf中的LoadModule bw_module          modules/bw_mod-0.6.so   下面加入以下設(shè)置指令:
                     BandWidthModule On    
          #啟動(dòng)bw_mod模塊
                    BandWidth  all 0
                    #總的帶寬不用限制
                    LargeFileLimit .rar 30 23000
          #限制所有大于30K的后綴名為.rar的文件的速率為23000字節(jié)/秒,即23K/秒
                    LargeFileLimit .mp3 30 23000
                    LargeFileLimit .wav 30 23000
                   LargeFileLimit .jpg 10 27000
                   LargeFileLimit .gif 5 27000
                   LargeFileLimit .zip 50 30000
                   LargeFileLimit .sis 50 30000
                   LargeFileLimit .exe 50 30000
                 安裝完畢后,網(wǎng)站速度有明顯好轉(zhuǎn)。
          posted @ 2008-09-16 11:17 藍(lán)劍 閱讀(793) | 評(píng)論 (0)編輯 收藏
          限制并發(fā)數(shù)
          下載模塊:

          到官方網(wǎng)址: http://www.nowhere-land.org/programs/mod_vhost_limit/下載模塊

          http://www.nowhere-land.org/prog ... st_limit-0.4.tar.gz

          安裝
          apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so

          httpd.conf 加入:

          LoadModule vhost_limit_module libexec/mod_vhost_limit.so
          AddModule mod_vhost_limit.c

          配置

          MaxClients 150
          ExtendedStatus On

          NameVirtualHost *

          <VIRTUALHOST * />
              ServerName       server1
              DocumentRoot     /some/where/1
              MaxVhostClients  100


          <VIRTUALHOST * />
              ServerName       server2
              DocumentRoot     /some/where/2
              MaxVhostClients  30


          <VIRTUALHOST * />
              ServerName       server3
              DocumentRoot     /some/where/3


          其中: server1 被限制為 100 個(gè)并發(fā)線程數(shù)。 server2 被限制為 30 個(gè)并發(fā)線程數(shù)。 server3 沒(méi)有被限制。

          注:需 mod_status 的 ExtendedStatus On 支持!!

          如超出限制的并發(fā)數(shù)在客戶端就會(huì)出現(xiàn)503錯(cuò)誤

          ----------------------------------------------------------------------------------------------

          限制IP連接數(shù)

          到這里下載模塊 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz

          安裝:
          tar zxvf mod_limitipconn-0.04.tar.gz
          cd mod_limitipconn-0.04
          make APXS=/usr/local/apache/bin/apxs  ß-----這里要按你自己的路徑設(shè)置
          make install APXS=/usr/local/apache/bin/apxs ß-----這里要按你自己的路徑設(shè)置

          編輯httpd.conf
          添加
          全局變量:
          < IfModule mod_limitipconn.c >
                < Location / >   # 所有虛擬主機(jī)的/目錄
                    MaxConnPerIP 3     # 每IP只允許3個(gè)并發(fā)連接
                  NoIPLimit image/*  # 對(duì)圖片不做IP限制
              < /Location >

          < Location /mp3 >  # 所有主機(jī)的/mp3目錄
          MaxConnPerIP 1         # 每IP只允許一個(gè)連接請(qǐng)求   
          OnlyIPLimit audio/mpeg video    # 該限制只對(duì)視頻和音頻格式的文件
              < /Location >
          < /IfModule >



          或者虛擬主機(jī)的:
          < VirtualHost xx.xxx.xx.xx > ##ip 地址
          ServerAdmin easy@phpv.net
          DocumentRoot /home/easy
          ServerName www.phpv.net
          < IfModule mod_limitipconn.c >
              < Location / >   
          MaxConnPerIP 5        
                    NoIPLimit image/*      
              < /Location >
                < Location /mp3 >    # 所有主機(jī)的/mp3目錄
          MaxConnPerIP 2         # 每IP只允許一個(gè)連接請(qǐng)求   
          OnlyIPLimit audio/mpeg video # 該限制只對(duì)視頻和音頻格式的文件
                < /Location >
          < /IfModule >
          < /VirtualHost >



          ----------------------------------------------------------------------------------------------

          限制帶寬

          下載模塊 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
          安裝:
          /usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so  



          <-------以上/usr/local/apache請(qǐng)?jiān)O(shè)置為你的路徑

          編輯httpd.conf
          添加:
          LoadModule bandwidth_module libexec/mod_bandwidth.so
          AddModule mod_bandwidth.c

          重啟你的apache

          相關(guān)文檔

          Global configuration directives :

              * BandWidthDataDir
                Syntax : BandWidthDataDir <directory>
                Default : "/tmp/apachebw"
                Context : server config

          Sets the name of the root directory used by mod_bandwidth to store its internal temporary information. Don't forget to create the needed directories : <directory>/master and <directory>/link

              * BandWidthModule
                Syntax : BandWidthModule <On|Off>
                Default : Off
                Context : per server config

          Enable or disable totaly the whole module. By default, the module is disable so it is safe to compile it in the server anyway.

          PLEASE, NOTE THAT IF YOU SET A BANDWIDTH LIMIT INSIDE A VIRTUALHOST BLOCK, YOU ALSO __NEED__ TO PUT THE "BandWidthModule On" DIRECTIVE INSIDE THAT VIRTUALHOST BLOCK !

          IF YOU SET BANDWIDTH LIMITS INSIDE DIRECTORY BLOCKS (OUTSIDE OF ANY VIRTUALHOST BLOCK), YOU ONLY NEED TO PUT THE "BandWidthModule On" DIRECTIVE ONCE, OUTSIDE OF ANY VIRTUALHOST OR DIRECTORY BLOCK.

              * BandWidthPulse
                Syntax : BandWidthPulse <microseconds>
                Default :
                Context : per server config

          Change the algorithm used to calculate bandwidth and transmit data. In normal mode (old mode), the module try to transmit data in packets of 1KB. That mean that if the bandwidth available is of 512B, the module will transmit 1KB, wait 2 seconds, transmit another 1KB and so one.

          Seting a value with "BandWidthPulse", will change the algorithm so that the server will always wait the same amount of time between sending packets but the size of the packets will change. The value is in microseconds. For example, if you set "BandWidthPulse 1000000" (1 sec) and the bandwidth available is of 512B, the sever will transmit 512B, wait 1 second, transmit 512B and so on.

          The advantage is a smother flow of data. The disadvantage is a bigger overhead of data transmited for packet header. Setting too small a value (bellow 1/5 of a sec) is not realy useful and will put more load on the system and generate more traffic for packet header.

          Note also that the operating system may do some buffering on it's own and so defeat the purpose of setting small values.

          This may be very useful on especialy crowded network connection : In normal mode, several seconds may happen between the sending of a full packet. This may lead to timeout or people may believe that the connection is hanging. Seting a value of 1000000 (1 sec) would guarantee that some data are sent every seconds...
          posted @ 2008-09-16 10:56 藍(lán)劍 閱讀(848) | 評(píng)論 (0)編輯 收藏
          #
          # 基于 NCSA 服務(wù)器的配置文件 由 Rob McCool 編寫(xiě),龍子翻譯
          #
          # Apache服務(wù)器主配置文件.  包括服務(wù)器指令的目錄設(shè)置.
          # 詳見(jiàn) <URL:http://www.apache.org/docs/>
          #
          # 請(qǐng)?jiān)诶斫庥猛镜幕A(chǔ)上閱讀各指令。
          #
          # 再讀取此文檔后,服務(wù)器將繼續(xù)搜索運(yùn)行
          # E:/Program Files/Apache Group/Apache/conf/srm.conf
          # E:/Program Files/Apache Group/Apache/conf/access.conf
          # 除非用ResourceConfig或AccessConfig覆蓋這兒的標(biāo)識(shí)
          #
          # 配置標(biāo)識(shí)由三個(gè)基本部分組成:
          #  1. 作為一個(gè)整體來(lái)控制Apache服務(wù)器進(jìn)程的標(biāo)識(shí) (the 'global environment').
          #  2. 用于定義主(默認(rèn))服務(wù)器參數(shù)的標(biāo)識(shí)。
          #     響應(yīng)虛擬主機(jī)不能處理的請(qǐng)求。
          #     同時(shí)也提供所有虛擬主機(jī)的設(shè)置值。
          #  3. 虛擬主機(jī)的設(shè)置。在一個(gè)Apache服務(wù)器進(jìn)程中配置不同的IP地址和主機(jī)名。
          #
          # 配置和日志文件名:指定服務(wù)器控制文件命名時(shí),
          # 以 "/" (或 "drive:/" for Win32)開(kāi)始,服務(wù)器將使用這些絕對(duì)路徑。
          # 如果文件名不是以"/"開(kāi)始的,預(yù)先考慮服務(wù)器根目錄--
          #  因此 "logs/foo.log",如果服務(wù)器根目錄是"/usr/local/apache",
          #  服務(wù)器將解釋為 "/usr/local/apache/logs/foo.log".
          #
          # 注: 指定的文件名需要用"/"代替"""。
          # (例, "c:/apache" 代替 "c:"apache").
          # 如果省略了驅(qū)動(dòng)器名,默認(rèn)使用Apache.exe所在的驅(qū)動(dòng)器盤(pán)符
          # 建議指定盤(pán)符,以免混亂。
          #
          ### 部分 1: 全局環(huán)境
          #
          # 本部分的表示將影響所有Apache的操作
          # 例如,所能處理的并發(fā)請(qǐng)求數(shù)或配置文件地址
          #
          #
          # ServerType 可取值 inetd 或 standalone.  Inetd 只適用于Unix平臺(tái)
          #
          ServerType standalone
          #
          # ServerRoot: 目錄樹(shù)的根結(jié)點(diǎn)。服務(wù)器配置、出錯(cuò)信息、日志文件都保存在根目錄下。
          #
          # 不要再目錄末尾加"/"
          #
          ServerRoot "C:/Program Files/Apache Group/Apache"
          #
          # PidFile: 服務(wù)器用于記錄啟動(dòng)時(shí)進(jìn)程ID的文件。
          #
          PidFile logs/httpd.pid
          #
          # ScoreBoardFile: 用于保存內(nèi)部服務(wù)器進(jìn)程信息的文件。
          # 并非必須。 但是如果指定了(此文件當(dāng)運(yùn)行Apache時(shí)生成)
          # 那么必須確保沒(méi)有兩個(gè)Apache進(jìn)程共享同一個(gè)scoreboard文件。
          #
          ScoreBoardFile logs/apache_runtime_status
          #
          # 在標(biāo)準(zhǔn)配置下,服務(wù)器將順序讀取 httpd.conf(此文件可通過(guò)命令行中-f參數(shù)指定),
          # srm.conf 和 access.conf。
          # 目前后兩個(gè)文件是空的。為了簡(jiǎn)單起見(jiàn),建議將所有的標(biāo)識(shí)放在一個(gè)文件中。 
          # 以下兩條注釋的標(biāo)識(shí),是默認(rèn)設(shè)置。
          # 要讓服務(wù)器忽略這些文件可以用 "/dev/null" (for Unix)
          # 或"nul" (for Win32) 作為參數(shù)。
          #
          #ResourceConfig conf/srm.conf
          #AccessConfig conf/access.conf
          #
          # Timeout: 接受和發(fā)送timeout的時(shí)間
          #
          Timeout 300
          #
          # KeepAlive: 是否允許保持連接(每個(gè)連接有多個(gè)請(qǐng)求)
          # "Off" -無(wú)效
          #
          KeepAlive On
          #
          # MaxKeepAliveRequests: 每個(gè)連接的最大請(qǐng)求數(shù)。
          # 設(shè)置為0表示無(wú)限制
          # 建議設(shè)置較高的值,以獲得最好的性能。
          #
          MaxKeepAliveRequests 100
          #
          # KeepAliveTimeout: 同一連接同一客戶端兩個(gè)請(qǐng)求之間的等待時(shí)間。
          #
          KeepAliveTimeout 15
          #
          # 在Win32下,Apache每次產(chǎn)生一個(gè)子進(jìn)程來(lái)處理請(qǐng)求。
          # 如果這個(gè)進(jìn)程死了,會(huì)自動(dòng)產(chǎn)生另一個(gè)子進(jìn)程。
          # 所有的進(jìn)入請(qǐng)求在子進(jìn)程中多線程處理。
          # 以下兩個(gè)標(biāo)識(shí)控制進(jìn)程的運(yùn)行
          #
          #
          # MaxRequestsPerChild: 每個(gè)子進(jìn)程死亡之前最大請(qǐng)求數(shù)
          # 如果超過(guò)這個(gè)請(qǐng)求數(shù),子程序會(huì)自動(dòng)退出,避免延期使用導(dǎo)致內(nèi)存溢出或其他問(wèn)題。
          # 大部分系統(tǒng),并不需要此設(shè)置,
          # 但是部分,象Solaris,確實(shí)值得注意。
          # 對(duì)Win32, 可設(shè)置為0 (無(wú)限制)
          # 除非有另外的考慮。
          #
          # 注: 此值不包括在每個(gè)連接初始化請(qǐng)求后,"keptalive"請(qǐng)求
          #       例如, 如果一個(gè)子進(jìn)程處理一個(gè)初始化請(qǐng)求和10個(gè)后續(xù)"keptalive"請(qǐng)求,
          #       在這個(gè)限制下,只會(huì)記為一個(gè)請(qǐng)求。
          #
          MaxRequestsPerChild 0
          #
          # ThreadsPerChild: 服務(wù)器所允許的并發(fā)線程數(shù)。
          # 此值的設(shè)置取決于服務(wù)器的響應(yīng)能力(約多的請(qǐng)求在同一時(shí)間激活,則每個(gè)請(qǐng)求的處理時(shí)間越慢)
          # 和服務(wù)器所允許消耗的系統(tǒng)資源。
          #
          ThreadsPerChild 50
          #
          # Listen: 允許將Apache綁頂?shù)街付ǖ腎P地址和端口,作為默認(rèn)值的輔助選項(xiàng)。
          # 參見(jiàn) <VirtualHost>
          #
          #Listen 3000
          #Listen 12.34.56.78:80
          #
          # BindAddress: 通過(guò)此選項(xiàng)可支持虛擬主機(jī)。
          # 此標(biāo)識(shí)用于告訴服務(wù)器監(jiān)聽(tīng)哪個(gè)IP地址。
          # 包括:"*", IP地址, 或域名.
          # 參見(jiàn) <VirtualHost> 和 Listen directives.
          #
          BindAddress 166.111.178.144
          #
          # Apache模塊編譯成標(biāo)準(zhǔn)的Windows結(jié)構(gòu)。
          #
          # 以下模塊綁定到標(biāo)準(zhǔn)的Apache二進(jìn)制windows分布。
          # 要修改標(biāo)準(zhǔn)操作,取消以下行的注釋并且修改指定模塊列表。
          #
          # 警告:這是高級(jí)選項(xiàng)。可能導(dǎo)致服務(wù)器崩潰。
          # 沒(méi)有專(zhuān)家的指導(dǎo),不要輕易修改。
          #
          #ClearModuleList
          #AddModule mod_so.c mod_mime.c mod_access.c mod_auth.c mod_negotiation.c
          #AddModule mod_include.c mod_autoindex.c mod_dir.c mod_cgi.c mod_userdir.c
          #AddModule mod_alias.c mod_env.c mod_log_config.c mod_asis.c mod_imap.c
          #AddModule mod_actions.c mod_setenvif.c mod_isapi.c
          #
          # 動(dòng)態(tài)共享對(duì)象(Dynamic Shared Object,DSO)
          #
          # 要使用基于DSO的功能模塊,需要替換此處相應(yīng)的
          #  `LoadModule' 行。這樣在使用之前這些包含的標(biāo)識(shí)都將生效。
          # 有關(guān)DSO及至的詳細(xì)資料請(qǐng)看Apache1.3版中的README.DSOSO。
          # 運(yùn)行"apche -l"將列表顯示Apache內(nèi)奸的模塊(類(lèi)似標(biāo)準(zhǔn)的連接已經(jīng)生效)
          #
          # 注:模塊載入的順序很重要。沒(méi)有專(zhuān)家的建議,不要修改以下的順序。
          #
          #LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
          #LoadModule dbm_auth_module modules/ApacheModuleAuthDBM.dll
          #LoadModule digest_auth_module modules/ApacheModuleAuthDigest.dll
          #LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll
          #LoadModule digest_module modules/ApacheModuleDigest.dll
          #LoadModule expires_module modules/ApacheModuleExpires.dll
          #LoadModule headers_module modules/ApacheModuleHeaders.dll
          #LoadModule proxy_module modules/ApacheModuleProxy.dll
          #LoadModule rewrite_module modules/ApacheModuleRewrite.dll
          #LoadModule speling_module modules/ApacheModuleSpeling.dll
          #LoadModule info_module modules/ApacheModuleInfo.dll
          #LoadModule status_module modules/ApacheModuleStatus.dll
          #LoadModule usertrack_module modules/ApacheModuleUserTrack.dll
          #
          # ExtendedStatus 在服務(wù)器狀態(tài)句柄被呼叫時(shí)控制是產(chǎn)生"完整"的狀態(tài)信息(ExtendedStatus On)
          # 還是僅返回基本信息(ExtendedStatus Off)
          # 默認(rèn)是:Off
          #
          #ExtendedStatus On
          ### 部分 2: 主服務(wù)器配置
          #
          # 此部分的標(biāo)識(shí)用于主服務(wù)器所有的設(shè)置值,
          # 響應(yīng)任何<VirtualHost>定義不處理的請(qǐng)求
          # 這些值同時(shí)給你稍后在此文件中定義的<VirtualHost>提供默認(rèn)值。
          #
          # 所有的標(biāo)識(shí)可能會(huì)在<VirtualHost>中出現(xiàn)。
          # 對(duì)應(yīng)的默認(rèn)值會(huì)被虛擬主機(jī)重新定義覆蓋。
          #
          #
          # Port: Standalone服務(wù)器監(jiān)聽(tīng)的端口。 
          # 在Apache能夠監(jiān)聽(tīng)指定端口前,需要在防火墻中進(jìn)行設(shè)置。
          # 其它運(yùn)行httpd的服務(wù)器也可能影響此端口。  Disable
          # 如果遇到問(wèn)題,請(qǐng)關(guān)閉所有的防火墻、安全保護(hù)和其他的服務(wù)。
          # Windos NT的"NETSTAT -a"指令會(huì)有助于問(wèn)題的分析。
          #
          Port 80
          #
          # ServerAdmin: 你的地址。如果服務(wù)器有任何問(wèn)題將發(fā)信到這個(gè)地址。
          # 這個(gè)地址會(huì)在服務(wù)器產(chǎn)生的某些頁(yè)面中出現(xiàn),例如,錯(cuò)誤報(bào)告。
          #
          ServerAdmin chenyl98@mails.tsinghua.edu.cn
          #
          # ServerName 允許設(shè)置主機(jī)名。如果與程序獲得的不同,主機(jī)名將返回客戶端。
          # (例如,用"www"代替主機(jī)真實(shí)的名字)
          #
          # 注: 主機(jī)名不能隨便指定。必須是你的機(jī)器有效的DNS名稱(chēng)。否則無(wú)法正常工作。
          # 如果不能理解,傾向你的網(wǎng)絡(luò)管理員詢(xún)問(wèn)。
          # 如果你的主機(jī)沒(méi)有注冊(cè)DNS名,可在此輸入IP地址。
          # 此時(shí)必須用IP地址來(lái)訪問(wèn)。(如, http://123.45.67.89/)
          # 這樣扔可以完成重新定向的工作。
          #
          # 127.0.0.1 是TCP/IP的本地環(huán)路地址, 通常命名為localhost.
          # 機(jī)器默認(rèn)此地置為本身。 如果只是使用Apache來(lái)進(jìn)行本地測(cè)試和開(kāi)發(fā),
          # 可使用127.0.0.1 作為服務(wù)器名.
          #
          #ServerName new.host.name

          #
          # DocumentRoot: 放置服務(wù)文檔的目錄。
          # 默認(rèn)狀態(tài)下,所有的請(qǐng)求都以這個(gè)目錄為基礎(chǔ)。
          # 但是直接符號(hào)連接和別名可用于指向其他位置。
          #
          DocumentRoot "D:/www_root"
          #
          # Apache訪問(wèn)的每個(gè)目錄可設(shè)置相關(guān)的服務(wù)和特性是允許或(和)不允許。
          # (同樣影響其子目錄)
          #
          # 首先,設(shè)置"default"地址只有最基本的權(quán)限。
          #
          <Directory />
              Options FollowSymLinks
              AllowOverride None
          </Directory>
          #
          # 注意從現(xiàn)在開(kāi)始必須制定開(kāi)啟特殊的權(quán)限。
          # 這樣就不會(huì)產(chǎn)生意想不到的結(jié)果。
          # 請(qǐng)仔細(xì)確認(rèn)。
          #
          #
          # 這個(gè)地址應(yīng)與DocumentRoot保持一致
          #
          <Directory "D:/www_root">
          #
          # 此值可是: "None", "All", 或下列的組合: "Indexes",
          # "Includes", "FollowSymLinks", "ExecCGI", 或 "MultiViews".
          #
          # 注意"MultiViews"必須明確指定--- "Options All"不包括此特性。
          #
              Options Indexes FollowSymLinks MultiViews
          #
          # 此項(xiàng)控制目錄中哪些.htaccess文件可覆蓋。
          # 允許值: "All"或者以下項(xiàng)的組合:"Options", "FileInfo",
          # "AuthConfig", "Limit"
          #
              AllowOverride None
          #
          # 控制哪些用戶可從此服務(wù)器獲得資料。
          #
              Order allow,deny
              Allow from all
          </Directory>
          #
          # UserDir: 當(dāng)請(qǐng)求~user時(shí),追加到用戶主目錄的路徑地址。
          #
          # 在Win32下,并不要求指定為用戶登陸的主目錄。
          # 因此可使用以下的格式。
          # 詳細(xì)參照文檔UserDir
          #
          <IfModule mod_userdir.c>
              UserDir "f:/homepages/"
          </IfModule>
          #
          # 控制訪問(wèn)UserDir目錄.  The following is an example
          # 以下是一個(gè)站點(diǎn)的例子,權(quán)限限制為只讀。
          #
          #<Directory "E:/Program Files/Apache Group/Apache/users">
          #    AllowOverride FileInfo AuthConfig Limit
          #    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
          #    <Limit GET POST OPTIONS PROPFIND>
          #        Order allow,deny
          #        Allow from all
          #    </Limit>
          #    <LimitExcept GET POST OPTIONS PROPFIND>
          #        Order deny,allow
          #        Deny from all
          #    </LimitExcept>
          #</Directory>
          #
          # DirectoryIndex: 預(yù)設(shè)的HTML目錄索引文件名。
          # 用空格來(lái)分隔多個(gè)文件名。
          #
          <IfModule mod_dir.c>
              DirectoryIndex index.html
          </IfModule>
          #
          # AccessFileName: 每個(gè)目錄中用于控制訪問(wèn)信息的文件名。
          #
          AccessFileName .htaccess
          #
          # 以下行防止客戶端可訪問(wèn) .htaccess 文件。
          # 因?yàn)?.htaccess文件通常包含授權(quán)信息,
          # 處于安全的考慮不允許訪問(wèn)。
          # 如果想讓訪客看到.htaccess文件的內(nèi)容,
          # 可將這些行注釋。
          # 如果修改了上面的AccessFileName,
          # 請(qǐng)?jiān)诖诉M(jìn)行相應(yīng)的修改。
          #
          # 同時(shí),一般會(huì)用類(lèi)似.htpasswd的文件保存密碼。
          # 這些文件同樣可以得到保護(hù)。
          #
          <Files ~ "^".ht">
              Order allow,deny
              Deny from all
          </Files>
          #
          # CacheNegotiatedDocs: 默認(rèn)下,Apache對(duì)每個(gè)文檔發(fā)送"Pragma: no-cache"
          # 這將要求代理服務(wù)器不緩存此文檔。
          # 取消下列行的可取消這個(gè)屬性,這樣代理服務(wù)器將緩存這些文檔。
          #
          #CacheNegotiatedDocs
          #
          # UseCanonicalName:  (1.3新增)  當(dāng)此設(shè)置為on時(shí),
          # 無(wú)論何時(shí)Apache需要構(gòu)建一個(gè)自引用的URL(指向響應(yīng)來(lái)源服務(wù)器),
          # 它將用ServerName和Port來(lái)構(gòu)建一個(gè)規(guī)范的格式。
          # 當(dāng)此設(shè)置為off時(shí),Apache將使用客戶端提供的"主機(jī)名:端口"
          # 這將同時(shí)影響CGI腳本中的SERVER_NAME和SERVER_PORT
          #
          UseCanonicalName On
          #
          # TypesConfig 記錄媒體類(lèi)型(mime.types)文件或類(lèi)似的東東放置的位置
          #
          <IfModule mod_mime.c>
              TypesConfig conf/mime.types
          </IfModule>
          #
          # DefaultType 是服務(wù)器處理未確認(rèn)類(lèi)型的文件,如為止的擴(kuò)展名,的默認(rèn)類(lèi)型。
          # 如果你的服務(wù)器上主要包含的是文本或HTML文檔,"text/plain"是較好的設(shè)置
          # 如果服務(wù)器上主要包含二進(jìn)制文件,如應(yīng)用程序或圖片,
          # 最好設(shè)置成"application/octet-stream"防止瀏覽器將二進(jìn)制文件以文本的方式顯示。
          #
          DefaultType text/plain
          #
          # mod_mime_magic模塊允許服務(wù)器使用文件自身的不同標(biāo)識(shí)來(lái)確定文件類(lèi)型。
          # MIMEMagicFile指示模塊文件標(biāo)識(shí)的定義所在的位置。
          # mod_mime_magic不是默認(rèn)服務(wù)器的一部分。
          # (必須自行用LoadModule來(lái)追加 [見(jiàn)'全局環(huán)境'部分的 DSO 章節(jié)],
          # 或者在編譯服務(wù)器時(shí)包含mod_mime_magic部分)
          # 包含在 <IfModule> 中.
          # 就是說(shuō),如果該模塊是服務(wù)器的一部分,MIMEMagicFile標(biāo)識(shí)將執(zhí)行。
          #
          <IfModule mod_mime_magic.c>
              MIMEMagicFile conf/magic
          </IfModule>
          #
          # HostnameLookups: 注冊(cè)客戶端的機(jī)器名或IP地址。
          # 例如: www.apache.org (on) 或 204.62.129.132 (off).
          # 默認(rèn)為off,因?yàn)閷?duì)于網(wǎng)絡(luò)來(lái)說(shuō),最好讓人們有意識(shí)的設(shè)置為on,
          # 因?yàn)殚_(kāi)啟此功能意味著每個(gè)客戶請(qǐng)求將導(dǎo)致至少向name服務(wù)器發(fā)送一個(gè)lookup請(qǐng)求
          #
          HostnameLookups Off
          #
          # ErrorLog: 錯(cuò)誤記錄文件的地址
          # 如果不在<VirtualHost>內(nèi)指定ErrorLog
          # 改虛擬主機(jī)的錯(cuò)誤心細(xì)將記錄到此處。
          # 如果在<VirtualHost>中明確指定了錯(cuò)誤記錄文件,
          # 則錯(cuò)誤將記錄在那兒而不是這兒。
          #
          ErrorLog logs/error.log
          #
          # LogLevel: 控制記錄在error.log中信息的個(gè)數(shù).
          # 可能的值:debug, info, notice, warn, error, crit,
          # alert, emerg.
          #
          LogLevel warn
          #
          # 以下標(biāo)識(shí)定義CustomLog標(biāo)識(shí)使用的格式。(見(jiàn)下)
          #
          LogFormat "%h %l %u %t ""%r"" %>s %b ""%{Referer}i"" ""%{User-Agent}i""" combined
          LogFormat "%h %l %u %t ""%r"" %>s %b" common
          LogFormat "%{Referer}i -> %U" referer
          LogFormat "%{User-agent}i" agent
          #
          # 訪問(wèn)記錄的位置和格式 (功用的記錄文件格式).
          # 如果不在<VirtualHost>中定義記錄文件,
          # 那些訪問(wèn)記錄就將保存在這兒。  Contrariwise, if you *do*
          # 反之,如果指定了記錄文件,那么訪問(wèn)記錄將記錄在那兒而不是這個(gè)文件中。
          #
          CustomLog logs/access.log common
          #
          # 如果希望使用代理和參考的記錄文件, 取消以下標(biāo)識(shí)的注釋符
          #
          #CustomLog logs/referer.log referer
          #CustomLog logs/agent.log agent
          #
          # 如果想在一個(gè)文件中記錄訪問(wèn)、代理、參考信息(復(fù)合的記錄格式)
          # 可使用以下標(biāo)識(shí)
          #
          #CustomLog logs/access.log combined
          #
          # 在服務(wù)器產(chǎn)生的頁(yè)面(如錯(cuò)誤文檔信息,F(xiàn)TP目錄列表等等,不包括CGI產(chǎn)生的文檔)中
          # 增加一條服務(wù)器版本和虛擬主機(jī)名的信息。
          # 設(shè)置為"EMail"將包含mailto: ServerAdmin的連接.
          # 可選值:  On | Off | EMail
          #
          ServerSignature On
          #
          # 默認(rèn)下,Apache用工作行解析所有CGI腳本
          # 此注釋行(腳本的第一行)包括'#'和'!'后面跟著執(zhí)行特殊腳本的程序路徑,
          # 對(duì)perl腳本來(lái)說(shuō)是C:"Program Files"Perl目錄中的perl.exe。
          # 工作行如下:
             #!c:/program files/perl/perl
          # 注意真實(shí)的工作行不能有縮進(jìn),必須是文件的第一行。
          # 當(dāng)然,CGI進(jìn)程必須通過(guò)適當(dāng)?shù)腟criptAlias或ExecCGI選項(xiàng)標(biāo)識(shí)來(lái)啟動(dòng)。
          #
          # 然而,Windows下的Apache即允許以上的Unix方式,也可以通過(guò)注冊(cè)表的形式。
          # 用注冊(cè)表執(zhí)行文件的方法同在Windows資源管理器中雙擊運(yùn)行的注冊(cè)方法相同。
          # 此腳本操作可在Windows資源管理器的"查看"菜單中設(shè)置。
          # "文件夾選項(xiàng)",然后查看"文件類(lèi)型"。點(diǎn)擊編輯按鈕。
          # 修改操作屬性。Apache 1.3會(huì)嘗試執(zhí)行‘Open'操作,
          # 如果失敗則會(huì)嘗試工作行
          # 這個(gè)屬性在Apache release 2.0中會(huì)有改變.
          #
          # 每個(gè)機(jī)制都有自身特定的安全弱點(diǎn),這樣可能導(dǎo)致別人運(yùn)行你不希望調(diào)用的程序。
          # 最佳的解決方案還在討論中。
          #
          # 要是這個(gè)Windows的特殊屬性生效 (同時(shí)會(huì)是Unix屬性無(wú)效)
          # 取消下列標(biāo)識(shí)的注釋符。
          #
          #ScriptInterpreterSource registry
          #
          # 上面的標(biāo)識(shí)可在<Directory>塊或.htaccess文件中單獨(dú)替換。
          # 可選擇'registry' (Windows behavior)或 'script'
          # (Unix behavior) option, 將覆蓋服務(wù)器的默認(rèn)值。
          #
          #
          # Aliases: 可無(wú)限制的追加別名。格式如下:
          # Alias 假名 真名
          #
          <IfModule mod_alias.c>
              #
              # 注意如果假名中包含'/',服務(wù)器會(huì)在當(dāng)前URL中發(fā)出請(qǐng)求。
              # 因此"/icons"不能用于別名
              # 必須用 "/icons/"..
              #
              Alias /icons/ "C:/Program Files/Apache Group/Apache/icons/"
              <Directory "C:/Program Files/Apache Group/Apache/icons">
                  Options Indexes MultiViews
                  AllowOverride None
                  Order allow,deny
                  Allow from all
              </Directory>
              #
              # ScriptAlias: 控制哪個(gè)目錄包含服務(wù)器腳本。
              # ScriptAlias本質(zhì)行和Aliases一樣。, except that
              # 區(qū)別在于真名目錄中的文檔被看作是一個(gè)應(yīng)用程序。
              # 請(qǐng)求時(shí)由服務(wù)器運(yùn)行而不是發(fā)往客戶端。
              # "/"符號(hào)的規(guī)則同
              # Alias相同.
              #
              ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/"
              #
              # "C:/Program Files/Apache Group/Apache/cgi-bin" 可修改為任何放置CGI腳本的目錄
              #
              <Directory "C:/Program Files/Apache Group/Apache/cgi-bin">
                  AllowOverride None
                  Options None
                  Order allow,deny
                  Allow from all
              </Directory>
          </IfModule>
          # 別名結(jié)束
          #php腳本說(shuō)明
          ScriptAlias /php/ "d:/php/"
          AddType application/x-httpd-php .php
          AddType application/x-httpd-php .php3
          AddType application/x-httpd-php .phtml
          Action application/x-httpd-php "/php/php.exe"
          #php腳本說(shuō)明結(jié)束
          #
          # Redirect 允許告訴客戶端服務(wù)器上曾經(jīng)有的文檔,但是現(xiàn)在不存在了。
          # 并且可以告訴客戶端到哪兒去尋找。
          # 格式: Redirect old-URL new-URL
          #
          #
          # 控制服務(wù)器目錄列表顯示的標(biāo)識(shí)
          #
          <IfModule mod_autoindex.c>
              #
              # FancyIndexing標(biāo)識(shí)是使用特定的目錄檢索還是標(biāo)準(zhǔn)的(standard)
              #
              IndexOptions FancyIndexing
              #
              # AddIcon*表明不同文件或擴(kuò)展名顯示的圖標(biāo)。
              # 這些圖標(biāo)只在特定檢索狀態(tài)下顯示。
              #
              AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
              AddIconByType (TXT,/icons/text.gif) text/*
              AddIconByType (IMG,/icons/image2.gif) image/*
              AddIconByType (SND,/icons/sound2.gif) audio/*
              AddIconByType (VID,/icons/movie.gif) video/*
              AddIcon /icons/binary.gif .bin .exe
              AddIcon /icons/binhex.gif .hqx
              AddIcon /icons/tar.gif .tar
              AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
              AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
              AddIcon /icons/a.gif .ps .ai .eps
              AddIcon /icons/layout.gif .html .shtml .htm .pdf
              AddIcon /icons/text.gif .txt
              AddIcon /icons/c.gif .c
              AddIcon /icons/p.gif .pl .py
              AddIcon /icons/f.gif .for
              AddIcon /icons/dvi.gif .dvi
              AddIcon /icons/uuencoded.gif .uu
              AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
              AddIcon /icons/tex.gif .tex
              AddIcon /icons/bomb.gif core
              AddIcon /icons/back.gif ..
              AddIcon /icons/hand.right.gif README
              AddIcon /icons/folder.gif ^^DIRECTORY^^
              AddIcon /icons/blank.gif ^^BLANKICON^^
              #
              # DefaultIcon 用于為制定圖標(biāo)的文件所顯示的圖標(biāo)。
              #
              DefaultIcon /icons/unknown.gif
              #
              # AddDescription在服務(wù)器生成的檢索的某個(gè)文件后追加小段說(shuō)明。
              # 此項(xiàng)只在設(shè)置為FancyIndexed時(shí)有效
              # 格式:AddDescription "描述" 文件名
              #
              #AddDescription "GZIP compressed document" .gz
              #AddDescription "tar archive" .tar
              #AddDescription "GZIP compressed tar archive" .tgz
              #
              # ReadmeName是服務(wù)器默認(rèn)的README文件。
              # 并且會(huì)追加到目錄列表的最后。
              #
              # HeaderName 是目錄中需要預(yù)先顯示內(nèi)容的文件名。
              #
              # 如果MultiViews在選項(xiàng)中,作為結(jié)果,服務(wù)器將先找name.html,
              # 如果存在就包含它。如果name.html不存在,
              # 服務(wù)器會(huì)繼續(xù)尋找name.txt。如果存在就作為純文本包含進(jìn)來(lái)。
              #
              ReadmeName README
              HeaderName HEADER
              #
              # IndexIgnore是一系列的文件名。目錄索引將忽略這些文件并且不包含在列表中。
              # 允許使用通配符。
              #
              IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
          </IfModule>
          # indexing標(biāo)識(shí)結(jié)束
          #
          # 文件類(lèi)型
          #
          <IfModule mod_mime.c>
              #
              # AddEncoding 可用于特殊瀏覽器(Mosaic/X 2.1+)快速傳輸壓縮信息。
              # 注:并不是所有的服務(wù)器都支持。
              # 除了名字相似,以下Add*標(biāo)識(shí)對(duì)上面的FancyIndexing定制標(biāo)識(shí)無(wú)影響。
              #
              AddEncoding x-compress Z
              AddEncoding x-gzip gz tgz
              #
              # AddLanguage用于指定文檔的語(yǔ)言。
              # 可以使用content標(biāo)簽指定每個(gè)文件的語(yǔ)言。
              #
              # 注 1: 后綴不必與所用語(yǔ)言的關(guān)鍵字相同。
              #   --- 波蘭語(yǔ)(Polish,標(biāo)準(zhǔn)代碼為pl)的文檔可以用
              #  "AddLanguage pl .po" 來(lái)避免與perl腳本文件混淆。
              #
              # 注 2: 以下例子表明兩個(gè)字母的語(yǔ)言縮寫(xiě)和兩個(gè)字母的國(guó)家縮寫(xiě)并不一定相同。
              # E.g. 'Danmark/dk' 對(duì)比 'Danish/da'.
              #
              # 注 3: 其中'ltz'使用了三個(gè)字符,與RFC的規(guī)定不同。
              # 但是這個(gè)問(wèn)題正在修訂中,并且重新清理RFC1766
              #
              # 丹麥Danish (da) - 荷蘭Dutch (nl) - 英國(guó)English (en) - 愛(ài)薩尼亞Estonian (ee)
              # 法國(guó)French (fr) - 德國(guó)German (de) - 現(xiàn)代希臘文Greek-Modern (el)
              # 意大利Italian (it) - 朝鮮Korean (kr) - 挪威Norwegian (no)
              # 葡萄牙Portuguese (pt) - 盧森堡Luxembourgeois* (ltz)
              # 西班牙Spanish (es) - 瑞典Swedish (sv) - 加泰羅尼亞Catalan (ca) - 捷克Czech(cz)
              # 波蘭Polish (pl) - 巴西Brazilian Portuguese (pt-br) - 日本Japanese (ja)
              # 俄國(guó)Russian (ru)
              #
              AddLanguage da .dk
              AddLanguage nl .nl
              AddLanguage en .en
              AddLanguage et .ee
              AddLanguage fr .fr
              AddLanguage de .de
              AddLanguage el .el
              AddLanguage he .he
              AddCharset ISO-8859-8 .iso8859-8
              AddLanguage it .it
              AddLanguage ja .ja
              AddCharset ISO-2022-JP .jis
              AddLanguage kr .kr
              AddCharset ISO-2022-KR .iso-kr
              AddLanguage no .no
              AddLanguage pl .po
              AddCharset ISO-8859-2 .iso-pl
              AddLanguage pt .pt
              AddLanguage pt-br .pt-br
              AddLanguage ltz .lu
              AddLanguage ca .ca
              AddLanguage es .es
              AddLanguage sv .se
              AddLanguage cz .cz
              AddLanguage ru .ru
              AddLanguage tw .tw
              AddCharset Big5         .Big5    .big5
              AddCharset WINDOWS-1251 .cp-1251
              AddCharset CP866        .cp866
              AddCharset ISO-8859-5   .iso-ru
              AddCharset KOI8-R       .koi8-r
              AddCharset UCS-2        .ucs2
              AddCharset UCS-4        .ucs4
              AddCharset UTF-8        .utf8
              # LanguagePriority 可設(shè)置語(yǔ)言的優(yōu)先級(jí)。
              #
              # 優(yōu)先級(jí)降序排列
              # 在此處按照字母順序,可自行修改
              #
              <IfModule mod_negotiation.c>
                  LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
              </IfModule>
              #
              # AddType 可臨時(shí)改變mime.types或者指定特殊文件的格式。
              #
              # 例如:PHP 3.x 模塊 (非Apache標(biāo)準(zhǔn)配件,參見(jiàn)http://www.php.net)可用下面格式定義:
              #
              #AddType application/x-httpd-php3 .php3
              #AddType application/x-httpd-php3-source .phps
              #
              # PHP 4.x, 使用:
              #
              #AddType application/x-httpd-php .php
              #AddType application/x-httpd-php-source .phps
              AddType application/x-tar .tgz
              #
              # AddHandler 可將特定文件擴(kuò)展名映射到處理方法上。
              # 與文件類(lèi)型無(wú)關(guān)。此特性可內(nèi)建到服務(wù)器中或者追加在操作指令中(見(jiàn)下)
              #
              # 如果希望用服務(wù)器端應(yīng)用或ScriptAliased外的CGI,取消以下行的注釋符
              #
              # 用CGI腳本:
              #
              #AddHandler cgi-script .cgi
              #
              # 用服務(wù)器解析的HTML文檔
              #
              #AddType text/html .shtml
              #AddHandler server-parsed .shtml
              #
              # 取消以下注釋符可激活A(yù)pache的send-asis HTTP file特性
              #
              #AddHandler send-as-is asis
              #
              # 如果使用服務(wù)器端解析的圖像定位文件,使用以下標(biāo)識(shí):
              #
              #AddHandler imap-file map
              #
              # 要激活type maps使用:
              #
              #AddHandler type-map var
          </IfModule>
          # 文檔類(lèi)型說(shuō)明結(jié)束
          #
          # Action 定義在文件匹配時(shí)執(zhí)行相應(yīng)的腳本。
          # 可簡(jiǎn)化常用CGI文件的調(diào)用。
          # 格式: Action media/type /cgi-script/location
          # 格式: Action handler-name /cgi-script/location
          #
          #
          # MetaDir: 指定保存meta信息文件的目錄。
          # 這些文件包含附加的HTTP頭,在發(fā)送文檔是一并發(fā)送。
          #
          #MetaDir .web
          #
          # MetaSuffix: 指定包含meta信息的文件的后綴。
          #
          #MetaSuffix .meta
          #
          # 可定制的錯(cuò)誤響應(yīng)(Apache類(lèi)型)
          #  共三種風(fēng)格:
          #
          #    1) 純文本
          #ErrorDocument 500 "The server made a boo boo.
          #  注: 第一個(gè)"號(hào)用于表示是文本,實(shí)際不輸出
          #
          #    2) 本地重定向
          #ErrorDocument 404 /missing.html
          #  to redirect to local URL /missing.html
          #ErrorDocument 404 /cgi-bin/missing_handler.pl
          #  注:可重定向到任何一個(gè)服務(wù)器端的腳本或文檔
          #
          #    3) 外部重定向
          #ErrorDocument 402 http://some.other_server.com/subscription_info.html
          #  注: 大部分與初始請(qǐng)求關(guān)聯(lián)的環(huán)境變量對(duì)這樣的腳本無(wú)效。
          #
          #
          # 基于瀏覽器的定制操作
          #
          <IfModule mod_setenvif.c>
              #
              # 以下標(biāo)識(shí)修改普通的HTTP響應(yīng)操作。
              # 第一個(gè)標(biāo)識(shí)針對(duì)Netscape2.x和其他無(wú)此功能的瀏覽器取消保持激活狀態(tài)的功能
              # 這些瀏覽器在執(zhí)行這些功能時(shí)會(huì)出錯(cuò)。
              # 第二個(gè)標(biāo)識(shí)針對(duì)IE4.0b2設(shè)置。其中有一條不完整的HTTP/1.1指令
              # 在301或302(重定向)響應(yīng)時(shí)不能正確的保持激活狀態(tài)
              #
              BrowserMatch "Mozilla/2" nokeepalive
              BrowserMatch "MSIE 4".0b2;" nokeepalive downgrade-1.0 force-response-1.0
              #
              # 下面的標(biāo)識(shí)通過(guò)不產(chǎn)生基本的1.1響應(yīng)取消對(duì)違反HTTP/1.0標(biāo)準(zhǔn)的瀏覽器的響應(yīng)。
              #
              BrowserMatch "RealPlayer 4".0" force-response-1.0
              BrowserMatch "Java/1".0" force-response-1.0
              BrowserMatch "JDK/1".0" force-response-1.0
          </IfModule>
          # 瀏覽器定制標(biāo)識(shí)結(jié)束
          #
          # 允許使用URL"http://servername/server-status"的形式查看服務(wù)器狀態(tài)報(bào)告
          # 修改 ".your_domain.com"來(lái)匹配相應(yīng)的域名以激活此功能
          #
          #<Location /server-status>
          #    SetHandler server-status
          #    Order deny,allow
          #    Deny from all
          #    Allow from .your_domain.com
          #</Location>
          #
          # 允許使用URL"://servername/server-info"(要求加載mod_info.c),
          # 來(lái)遠(yuǎn)程察看服務(wù)器配置報(bào)告。
          # 修改 ".your_domain.com"來(lái)匹配相應(yīng)的域名以激活此功能
          #
          #<Location /server-info>
          #    SetHandler server-info
          #    Order deny,allow
          #    Deny from all
          #    Allow from .your_domain.com
          #</Location>
          #
          # 據(jù)報(bào)有人試圖利用一個(gè)老的1.1漏洞。
          # 這個(gè)漏洞與CGI腳本在Apache服務(wù)器上分布有關(guān)。
          # 通過(guò)取消下面幾行的注釋符,可以將此類(lèi)攻擊記錄轉(zhuǎn)移到phf.apache.org上的記錄腳本上。
          # 或者也可以利用腳本scriptsupport/phf_abuse_log.cgi記錄在本地服務(wù)器上。
          #
          #<Location /cgi-bin/phf*>
          #    Deny from all
          #    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
          #</Location>
          #
          # 代理服務(wù)器標(biāo)識(shí)。取消下列行的注釋符可激活代理服務(wù)器。
          #
          #<IfModule mod_proxy.c>
          #    ProxyRequests On
          #    <Directory proxy:*>
          #        Order deny,allow
          #        Deny from all
          #        Allow from .your_domain.com
          #    </Directory>
              #
              # 激活/取消處理HTTP/1.1 "Via:" 報(bào)頭
              # ("Full":加入服務(wù)器版本; "Block":取消所有外發(fā)的Via: 報(bào)頭)
              # 可設(shè)置值: Off | On | Full | Block
              #
          #    ProxyVia On
              #
              # 可修改下列各行并取消注釋符來(lái)激活緩存。
              # (沒(méi)有CacheRoot標(biāo)識(shí)就不使用緩存)
              #
          #    CacheRoot "E:/Program Files/Apache Group/Apache/proxy"
          #    CacheSize 5
          #    CacheGcInterval 4
          #    CacheMaxExpire 24
          #    CacheLastModifiedFactor 0.1
          #    CacheDefaultExpire 1
          #    NoCache a_domain.com another_domain.edu joes.garage_sale.com
          #</IfModule>
          # 代理標(biāo)識(shí)結(jié)束
          ### 部分 3: 虛擬主機(jī)
          #
          # 虛擬主機(jī): 如果希望在一臺(tái)服務(wù)器上實(shí)現(xiàn)多個(gè)域名和主機(jī)名的服務(wù),
          # 可設(shè)置VirtualHost來(lái)實(shí)現(xiàn)。Most configurations
          # 大部分的設(shè)置使用基于名稱(chēng)的虛擬主機(jī),這樣服務(wù)器就不必為IP地址操心。
          # 這些用星號(hào)在下面的標(biāo)識(shí)中標(biāo)出。
          #
          # 在試圖設(shè)置虛擬主機(jī)前
          # 請(qǐng)閱讀<URL:http://www.apache.org/docs/vhosts/>中的文檔。
          # 以了解細(xì)節(jié)問(wèn)題。
          #
          # 可用命令行參數(shù) '-S'來(lái)確認(rèn)虛擬主機(jī)的設(shè)置。
          #
          #
          # 使用基于名稱(chēng)的虛擬主機(jī)
          #
          #NameVirtualHost *
          #
          # 虛擬主機(jī)實(shí)例:
          # 幾乎所有的Apache標(biāo)識(shí)都可用于虛擬主機(jī)內(nèi)。
          # 第一個(gè)VirtualHost部分用于申請(qǐng)一個(gè)無(wú)重復(fù)的服務(wù)器名。
          #
          #<VirtualHost *>
          #    ServerAdmin webmaster@dummy-host.example.com
          #    DocumentRoot /www/docs/dummy-host.example.com
          #    ServerName dummy-host.example.com
          #    ErrorLog logs/dummy-host.example.com-error_log
          #    CustomLog logs/dummy-host.example.com-access_log common
          #</VirtualHost>
          posted @ 2008-09-16 10:53 藍(lán)劍 閱讀(25096) | 評(píng)論 (1)編輯 收藏
          此模塊適用于提供文件下載的網(wǎng)站,限制文件下載速度。
          apache2必須以DSO模式安裝
          下載bw_mod-0.6.gz
          Http://apache.ivn.cl
          Bandwidth Module
          Module homepage at Http://apache.ivn.cl

          下載bw_mod-0.6.gz
          #tar zxvf bw_mod-0.6.gz
          #cd bw_mod-0.6
          #apxs -i -a -c bw_mod-0.6.c
          or
          #apxs2 -i -a -c bw_mod-0.6.c
          配置 (目錄只看明白這一種)其它方法大家有空說(shuō)一下。
          例如限制soft目錄下的文件下載速度,修改httpd.conf
          <Directory "/var/www/html/soft">;
          BandWidthModule On
          BandWidth all 30720
          </Directory>;

          BandWidthModule On為啟用帶寬限制功能。
          BandWidth all 30720第一個(gè)參數(shù)"all"為任何鏈接來(lái)源,第二個(gè)參數(shù)"30720"為限制帶寬為30KB。

          詳細(xì)說(shuō)明見(jiàn)bw_mod-0.6.txt

          綁定寬度模塊(ON/OFF)(似乎翻譯成限制帶寬更好)
          為使該模塊工作你需要設(shè)置為ON。缺省情況下模塊是不能工作的。也將不限制任何事情,
          例如“BANDWIDTHMODULE ON

          限制帶寬查錯(cuò)[ON/OFF]
          (缺省為OFF)當(dāng)使其能工作時(shí)LOG將輸出大量數(shù)據(jù)塊到錯(cuò)誤LOG,這些數(shù)據(jù)用于差錯(cuò)目的,并且不是經(jīng)常需要的,如果你很好奇你可以使其工作,但是注意這將使你的LOG增大很多,
          例如:BANDWIDTHDEBUG ON

          FORCEBANDWIDTHMODULE(ON|OFF)
          缺省情況下。這一模塊將捕獲每一請(qǐng)求。這樣做的目的是更容易配置,如果你禁止了這一功能,你將不得不手工添加輸出過(guò)濾器,如果你只想讓某些需求被BW模塊處理這樣是有用的。
          例如:FORCEBANDWIDTHMODULE OFF
          ADD OUTPUTFILTERBYTYPE BW-MOD TEXT/HTML TEXT/PLAIN

          BANDWIDTH[FROM][BYTES/S]
          這個(gè)命令有兩個(gè)參數(shù)。FROM是連接數(shù)據(jù)源,它可以是一個(gè)完全的主機(jī),域的一部分,一個(gè)IP地址,一個(gè)網(wǎng)關(guān)(如192。168。0。0/24或192。168。0。0/255。255。255。0)或者全部。
          第二個(gè)參數(shù)指明源所能達(dá)到的總速度,如果速度為0,將不限制速度。
          例如:BANDWIDTH LOCALHOST 10240
          BANDWIDTH 192。168。218。5 0

          MINBANDWIDTH[FROM][BYTES/S]
          這一命令有兩個(gè)參數(shù),F(xiàn)ROM是連接數(shù)據(jù)源,它可以是一個(gè)完全的主機(jī),域的一部分,一個(gè)IP地址,一個(gè)網(wǎng)關(guān)(如192。168。0。0/24或192。168。0。0/255。255。255。0)或者全部。
          第二個(gè)參數(shù)指明每一客戶端所能擁有的最小速度,這是什么意思呢,如果你有一個(gè)總共100KBYTES的速度,并且你設(shè)置MINBANDWIDTH值為50,那么不管你有多少個(gè)客戶,所有的客戶都將有最小50K的下載速度,
          如果速度設(shè)置為0,你將使用缺省最小速度(256BYTES/S)
          還有一個(gè)特殊的值是-1,這一值意味著每一客戶將有一個(gè)由BANDWIDTH決定的最高速度,請(qǐng)看例子:
          BANDWIDTH ALL 102400
          MINBANDWIDTH ALL 50000
          上例將使第一個(gè)客戶有一個(gè)最高100K的速度。如果更多的客戶連接速度將被相應(yīng)分配但是每一客戶將有至少50K的速度(即使你有50個(gè)客戶)。
          BANDWIDTH ALL 50000
          MINBANDWIDTH ALL -1
          上例是每一客戶有50K的最高速度。

          LARGEFILELIMIT[TYPE][MINIMUM SIZE][BYTES/S]
          TYPE。是是一個(gè)文件的后綴部分。或者使用*代表所有類(lèi)型文件,你可以使用TGZ只匹配TAR-CAMPRESSED文件,。匹配影音文件,或者*匹配所有類(lèi)型文件。
          MINIMUM SIZE,是要匹配文件的大小(用KBYTES表示),這一方法你可以用于一個(gè)可能堵塞你帶寬的巨大的影音文件。
          最后一個(gè)參數(shù)不言自明:允許的速度
          例如:LARGEFILELIMIT 。AVI 500 10240
          這將限制一個(gè)大于(等于)500KB的影音文件以10KB/S的速度傳送。

          -BANDWIDTHPACKET[SIZE]
          大概你根本用不上這個(gè),它的缺省值為8192,幾乎對(duì)任何速度都是合適的,
          SIZE的大小必須在1024和131072之間,一個(gè)過(guò)小的包將引起最大速度減慢,模塊將用更多的時(shí)間分割文件,如果你使用過(guò)大的值,模塊將調(diào)整為更低的速度。

          -BANDWIDTHERROR[ERROR]
          用 于傳送個(gè)性化錯(cuò)誤代碼。缺省情況下,當(dāng)達(dá)到最大連接時(shí),模塊將發(fā)布一個(gè)503 HTTP-SERVICE-UNAVAILABLE代碼,對(duì)一些用戶來(lái)說(shuō),收到錯(cuò)誤信息是令人厭煩的。也不知道是哪里出錯(cuò)。你可以使用一個(gè) errordocument指明網(wǎng)頁(yè)出現(xiàn)503錯(cuò)誤是你處于過(guò)重的連接負(fù)荷,但是有時(shí)候503并不由模塊發(fā)布。
          所以。你可以用此設(shè)置在達(dá)到最大連接時(shí)返回錯(cuò)誤代碼。你可以使用300到599之間的代碼,請(qǐng)注意,一些錯(cuò)誤代碼已經(jīng)被使用。所以在使用任何數(shù)字之前請(qǐng)查閱一下代碼列表(在GOOGLE中搜尋一下HTTP ERROR)
          當(dāng)測(cè)試時(shí)候。我曾經(jīng)使用過(guò)錯(cuò)誤代碼510。這是已經(jīng)被定義的代碼
          例如:個(gè)性化錯(cuò)誤頁(yè)
          ERRORDOCUMENT 510/ERRORS/MAXEONEXCEEDED。HTML
          BANDWIDTHERROR 510
          注意:有時(shí)候。個(gè)性化頁(yè)不顯示,我不能肯定問(wèn)題所在。但是大多數(shù)情況下。它是由于被超過(guò)1024BYTES的網(wǎng)頁(yè)固定了。無(wú)論如何。如果你需要使用ErrorDocument的幫助,參考APACHE文檔

          -MAXCONNECTION[FROM][MAX]
          有兩個(gè)參數(shù)。FROM是連接數(shù)據(jù)源,它可以是一個(gè)完全的主機(jī),域的一部分,一個(gè)IP地址,一個(gè)網(wǎng)關(guān)(如192。168。0。0/24或192。168。0。0/255。255。255。0)或者全部。
          第二個(gè)參數(shù)是允許連接到源的最大連接數(shù),任何超過(guò)最大連接數(shù)的連接將收到 503 Service Temporarily Unavailable
          你需要對(duì)相同的源使用BANDWIDTH限制。不需要設(shè)置最低連接限制。你可以使用不限制設(shè)置。你可能奇怪為什么。因?yàn)槲矣孟嗤拇鎯?chǔ)空間進(jìn)行BANDWIDTH限制和計(jì)算連接數(shù)
          ,所以我可以把存儲(chǔ)空間節(jié)省下來(lái)。如果你不設(shè)置BANDWIDTH于同一源。MAXCONNECTION將被忽略。
          例如: BandWidth all 0
          MaxConnection all 20
          or
          BandWidth all 0
          BandWidth 192.168.0.0/24 10240
          MaxConnection all 20
          MaxConnection 192.168.0.0/24 5
          請(qǐng)記住每一速度很大程度上依賴(lài)于你的連接,如果你沒(méi)有連接你不能得到更高的速度。
          記住如果你沒(méi)有遵循指示并得到了莫名其妙的結(jié)果,請(qǐng)?jiān)诎l(fā)EMAIL給我之前重新檢查你的配置。

          FAQ
          (無(wú)特別命令)
          1 為什么使用BW—MOD
          如果你要限制一個(gè)站點(diǎn)所能使用 的最大速度或者限制每站點(diǎn)允許的最大連接。或者只是實(shí)驗(yàn)MOD
          一些人告訴我。他們首先使用它來(lái)阻止小站點(diǎn)提供影音圖片或其他內(nèi)容時(shí)堵塞他們所有帶寬。
          2我應(yīng)該怎么做
          首先。閱讀文檔。如果你不能使其工作。或者你想詢(xún)問(wèn)更多特性。請(qǐng)?jiān)L問(wèn)主頁(yè)。并且提交請(qǐng)求。集注閱讀文檔和FAQ。如果請(qǐng)求已經(jīng)提交。我將馬上刪除副本。

          3(略)
          4 它是怎么工作的
          這個(gè)模塊設(shè)置一個(gè)你設(shè)置的配制所占有的共享內(nèi)存。在這一空間它也存儲(chǔ)當(dāng)前使用的信息的計(jì)數(shù)(象當(dāng)前連接,使用的BW,時(shí)間。發(fā)送的字節(jié)等)
          當(dāng)你設(shè)置了一個(gè)BW限制。這個(gè)模塊將進(jìn)行數(shù)據(jù)分割。并且分段傳送數(shù)據(jù)。在每段之間有一個(gè)小的延遲。這個(gè)延遲將被調(diào)整以在每一秒至少傳送一段數(shù)據(jù)
          posted @ 2008-09-16 10:43 藍(lán)劍 閱讀(544) | 評(píng)論 (0)編輯 收藏
          [伊達(dá)原創(chuàng)] 在APACHE環(huán)境下配置下載服務(wù)器
           
          具體配置如下
           
          DocumentRoot "/downfile"
          BandWidthModule On
          ForceBandWidthModule On
          <Location />
           MaxConnPerIP 1
          </Location>
          <Directory />
              Options FollowSymLinks
              AllowOverride None
              BandWidth    all 40960000
          </Directory>
          RewriteEngine on
          RewriteCond %{HTTP_REFERER} !^http://download.92wy.com.*$ [NC]
          RewriteCond %{HTTP_REFERER} !^http://down.92wy.com.*$ [NC]
          RewriteCond %{HTTP_REFERER} !^http://games.shangdu.com.*$ [NC]
          RewriteCond %{HTTP_REFERER} !^http://game.shangdu.com.*$ [NC]
          RewriteRule .*$ http://download.92wy.com/err.asp [R,NC]
          <Directory "/downfile">
              Options FollowSymLinks
              AllowOverride None
              Order allow,deny
              Allow from all
          </Directory>
           
          BandWidth    all 40960000  其實(shí)單位是字節(jié),字面上意思是限速40兆,其實(shí)下載速率只有100K++ ,測(cè)試環(huán)境是晚上9:30-10:20 和早上12:00---2:40 這就奇怪了,難道是單位搞錯(cuò)了? 我根據(jù)限速的不同做了一個(gè)記錄進(jìn)行對(duì)比。
           
          首先說(shuō)明的是測(cè)試的時(shí)候,系統(tǒng)APACHE進(jìn)程數(shù)在500左右~
          第一次限速 2048000 2M的理論速度 在客戶端下載的時(shí)候網(wǎng)際快車(chē)成波浪號(hào)呈現(xiàn),速度最多是5k-0k-5k..........
          第二次限速 20480000 大膽的設(shè)置成20M 看看實(shí)際下載速度能有多少,等服務(wù)重啟以后再測(cè)試速度達(dá)到56k-60k左右了
          第三次限速 是根據(jù)前兩次設(shè)置的速率來(lái)改的,將速度限制成為40960000 40M,在進(jìn)程數(shù)達(dá)到500左右的時(shí)候,內(nèi)存的消耗達(dá)到正常,cache數(shù)值沒(méi)有那么高了,只有50M左右。對(duì)比一下top上關(guān)于內(nèi)存的數(shù)值,你就可以發(fā)現(xiàn)限速?zèng)]有做好是對(duì)機(jī)器最起消耗作用的。
          這時(shí)候主下載服務(wù)器已經(jīng)可以在晚上高峰期承接500個(gè)左右的用戶的下載需求了,速度平均在100k-200k左右。我是機(jī)房直接做的測(cè)試,得到的數(shù)據(jù)應(yīng)該不受太多帶寬的影響。
           
          下載服務(wù)器一直都是系統(tǒng)維護(hù)人員最頭痛的東西,首先是容易掛, 其次是經(jīng)常更新和備份,最后是速度上不去網(wǎng)友們罵你。呵呵 第一次在機(jī)房發(fā)現(xiàn)下載時(shí)成波浪號(hào)曲線時(shí)還以為是系統(tǒng)的原因,結(jié)果檢查了一邊APACHE以后發(fā)現(xiàn)沒(méi)有配置上的錯(cuò)誤。最后就選擇了嘗試一下修改限速數(shù)值看 看,最后發(fā)現(xiàn)了有一定比例關(guān)系的。可是當(dāng)時(shí)在公司做實(shí)驗(yàn)的時(shí)候,在BandWidth上設(shè)置的數(shù)值確實(shí)可以正常限速,現(xiàn)在想想當(dāng)時(shí)只考慮了下載時(shí)的上限速 度并沒(méi)有考慮到服務(wù)器承受過(guò)多壓力以后的運(yùn)行能力。
           
          總結(jié)一下,好的下載服務(wù)器配置應(yīng)該是可以考慮到超壓情況下的用戶下載速度上限設(shè)置和最低速度的保證!
           
          以上只是我一點(diǎn)實(shí)際工作的感受,有什么不完善的地方歡迎及時(shí)給我提出批評(píng)!
          posted @ 2008-09-16 10:40 藍(lán)劍 閱讀(492) | 評(píng)論 (0)編輯 收藏
           你知道嗎,如果你的web server是采用apache那你就有機(jī)會(huì)通過(guò)安裝一個(gè)軟件模塊提高你的網(wǎng)站訪問(wèn)速度,最大能有10倍之多!這可不是吹牛,你看看原理就明白了。這個(gè)神 通廣大的模塊就是mod_gzip. 它通過(guò)用和gzip一樣的壓縮算法對(duì)apache發(fā)出的頁(yè)面進(jìn)行壓縮,可能的話可以把頁(yè)面壓縮成為原來(lái)大小的十份之一。哪,如果10K的頁(yè)面只要傳1K這 不就是提速10倍嘛。當(dāng)然一般網(wǎng)頁(yè)只可以達(dá)到3-6倍。那也很不錯(cuò)。對(duì)吧。連google這樣一個(gè)大的網(wǎng)站都采用這個(gè)技術(shù)。你還不快跟上?

          這樣一個(gè)好東東,來(lái)來(lái)來(lái),我告訴你如何安裝:分3步,1、下載,2、修改配置,3、測(cè)試。

          1.下載
          到http://www.remotecommunications.com/apache/mod_gzip 下載mod_gzip.c 還有它的補(bǔ)丁。

          2.安裝, 配置
          把mod_gzip放到你的apache的源代碼目錄下,新建一個(gè)mod_gzip目錄如果需要補(bǔ)丁(針對(duì)1.3.17.la版) 還需運(yùn)行:
          patch mod_gizp.c
          按你需要,在配置中選擇動(dòng)態(tài)DSO或靜態(tài)編譯進(jìn)apache系統(tǒng)。如何處理在README中講得很清楚,如-add-module=mod_gzip.c, make,make install等等。這里不多講。

          把下列配置加入httpd.conf尾部。

          # MOD_GZIP configuration
          mod_gzip_on Yes
          mod_gzip_minimum_file_size 1002
          mod_gzip_maximum_file_size 0
          mod_gzip_maximum_inmem_size 60000
          mod_gzip_item_include mime "application/x-httpd-php"
          mod_gzip_item_include mime text/*
          mod_gzip_item_include mime "httpd/unix-directory"
          mod_gzip_dechunk Yes
          mod_gzip_temp_dir "/tmp"
          mod_gzip_keep_workfiles No
          mod_gzip_item_include file ".php3$"
          mod_gzip_item_include file ".txt$"
          mod_gzip_item_include file ".html$"
          mod_gzip_item_exclude file ".css$"
          mod_gzip_item_exclude file ".js$"

          在保存修改后運(yùn)行
          …/bin/apachectl configtest確保配置修改無(wú)誤。
          然后用 apachectl restart 指令重起服務(wù)。

          3.修改,測(cè)試
          在宣布做好了之前在測(cè)試一下是優(yōu)秀程序員的習(xí)慣。為了盡量不影響你的用戶的瀏覽,我們可以用把新的apache驅(qū)動(dòng)在8080端口上或者用指令控制mod_gzip起作用的目錄,而不是一下子全用mod_gzip.
          用法如下:

          MOD_GZIP configuration

          你再用IE4或netscape認(rèn)真的全面測(cè)試一遍,沒(méi)有問(wèn)題后你就可以讓你的用戶很開(kāi)心的發(fā)現(xiàn)'XX網(wǎng)站現(xiàn)在好快哦。'

          Mod_gzip真的很神奇,100K的HTML大文檔只要12K就可以傳到用戶端了。越先采用這個(gè)技術(shù)你的用戶對(duì)你的網(wǎng)站的高速度印象就越深。不過(guò)有 所得必有所失,由于解壓是在客戶端進(jìn)行的,效果和用戶的瀏覽器有一定關(guān)系。筆者測(cè)試了MSIE4,5,5.5,netscape 4.5 , 6都運(yùn)行得很好. 不過(guò)java,jpg,gif等等是沒(méi)法壓縮的。
          posted @ 2008-09-16 10:35 藍(lán)劍| 編輯 收藏
          僅列出標(biāo)題  下一頁(yè)


          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(6)

          隨筆分類(lèi)(62)

          隨筆檔案(90)

          文章檔案(9)

          相冊(cè)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 325011
          • 排名 - 172

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 辽阳县| 焦作市| 怀仁县| 娱乐| 个旧市| 武安市| 东丽区| 利川市| 安阳市| 诸暨市| 连江县| 宣化县| 大厂| 泗水县| 红桥区| 全椒县| 西乌| 大庆市| 石渠县| 斗六市| 聊城市| 襄垣县| 东阳市| 丽江市| 乌审旗| 亚东县| 托克逊县| 余姚市| 修武县| 田林县| 轮台县| 奉贤区| 利辛县| 上蔡县| 平阳县| 临西县| 剑阁县| 新密市| 阿克苏市| 个旧市| 林甸县|