<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

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

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

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

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

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

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

    通過分析web服務(wù)器類型,大致可以推測操作系統(tǒng)類型,win使用iis,linux普遍apache,默認(rèn)的Apache配置里沒有任何信息保 護(hù)機(jī)制,并且允許目錄瀏覽,通過目錄瀏覽,通常可以得到類似“apache/1.37 Server at apache.linuxforum.net Port 80”或“apache/2.0.49(unix)PHP/4.3.8”的信息
    通過修改配置文件中的ServerTokens參數(shù),可以將Apache的相關(guān)信息隱藏起來,如果不行的話,可能是提示信息被編譯在程序里了,要隱藏需要修改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,在修改配置文件為上邊做過的,再次啟動apache后,用工具掃描,發(fā)現(xiàn)提示信息中已經(jīng)顯示為windows操作系統(tǒng)了
    順便說下,現(xiàn)在這個論壇,就有點(diǎn)不太講究,這是論壇錯誤的返回信息,看了有點(diǎn)汗地感覺
    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

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

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

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

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

    必須保證apache使用一個專門的用戶與組,不要使用系統(tǒng)預(yù)定的帳戶,比如nobody用戶與nogroup組
    因?yàn)橹挥衦oot用戶可以運(yùn)行apache,DocumentRoot應(yīng)該能夠被管理web站點(diǎn)內(nèi)容的用戶訪問和使用apache服務(wù)器的 apache用戶與組訪問,例如,希望“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能訪問日志,推薦這樣的權(quán)限
    chown -R root.root /etc/logs
    chown -R 700 /etc/logs

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

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

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

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

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

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

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

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

    十一:使用ssl加固Apache
    使用具有SSL功能的服務(wù)器,可以提高網(wǎng)站敏感頁的安全性能,SSL工作與TCP/IP協(xié)議和HTTP協(xié)議之間
    SSL可以加密互聯(lián)網(wǎng)上傳遞的數(shù)據(jù)流,提供身份驗(yàn)證,在線購物而不必?fù)?dān)心別人竊取信用卡信息,在基于電子商務(wù)和基于web郵件的地方非常重要。
    SSL的應(yīng)用相對還是比較麻煩的,有需要的話,可以發(fā)貼或查看資料,這幾就不多寫,篇幅不夠
    posted @ 2009-09-03 18:01 藍(lán)劍 閱讀(13677) | 評論 (1)編輯 收藏
    從網(wǎng)上找到的,不知道好不好用,先存上,以后有機(jī)會測試一下。
    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ì)算出來的:oLR8ZC-855550-67595356781722504
    posted @ 2008-12-18 09:22 藍(lán)劍 閱讀(2254) | 評論 (1)編輯 收藏
    Firestorm是一個用JAVA寫的代碼生成工具,可以替你節(jié)省很多的代碼量,可以說同類軟件中功能最強(qiáng)的一個。

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

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

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

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

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

    讓我們來看看具體步驟:


    step1:
        下載并安裝FIRESTORM。
    step2:
        反編譯jar文件,閱讀代碼,找到關(guān)鍵的方法。當(dāng)然,我這里寫出來,你就不用再麻煩了。(其實(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);
            }

        這個方法是對公鑰進(jìn)行檢驗(yàn),修改的思路就是直接讓他返回一個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文件.這里我們需要寫一個小程序來完成實(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)類的路徑,確保能夠找到需要修改的類,這里我指向firestorm.jar
                    //解包后的路徑
                    pool.insertClassPath("d:/work/firestorm/firestorm") ;    
                    
                    //獲得要修改的類
                    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() ;
                }
            }

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

    step4:
        將所有的class文件重新打包成firestorm.jar,然后替換
        [firestorm安裝路徑]/lib/firestorm.jar,再啟動firestorm即可。
    posted @ 2008-09-18 15:26 藍(lán)劍 閱讀(7699) | 評論 (0)編輯 收藏
    隨著在線人數(shù)的不斷增加,WDA的附件每天增量很多,流量越來越大,從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請用絕對路徑。此命令會自動安裝bw_mod,并在apache配置文件httpd.conf自動加入
    LoadModule bw_module          modules/bw_mod-0.6.so
    安裝完成后,會在modules目錄下生成bw_mod-0.6.so 文件。
    如果安裝過程沒有出錯的話,就可以開始進(jìn)行設(shè)置了。
    在httpd.conf中的LoadModule bw_module          modules/bw_mod-0.6.so   下面加入以下設(shè)置指令:
               BandWidthModule On    
    #啟動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) | 評論 (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 個并發(fā)線程數(shù)。 server2 被限制為 30 個并發(fā)線程數(shù)。 server3 沒有被限制。

    注:需 mod_status 的 ExtendedStatus On 支持!!

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

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

    限制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個并發(fā)連接
            NoIPLimit image/*  # 對圖片不做IP限制
        < /Location >

    < Location /mp3 >  # 所有主機(jī)的/mp3目錄
    MaxConnPerIP 1         # 每IP只允許一個連接請求   
    OnlyIPLimit audio/mpeg video    # 該限制只對視頻和音頻格式的文件
        < /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只允許一個連接請求   
    OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的文件
          < /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請?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) | 評論 (0)編輯 收藏
    #
    # 基于 NCSA 服務(wù)器的配置文件 由 Rob McCool 編寫,龍子翻譯
    #
    # Apache服務(wù)器主配置文件.  包括服務(wù)器指令的目錄設(shè)置.
    # 詳見 <URL:http://www.apache.org/docs/>
    #
    # 請?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)識
    #
    # 配置標(biāo)識由三個基本部分組成:
    #  1. 作為一個整體來控制Apache服務(wù)器進(jìn)程的標(biāo)識 (the 'global environment').
    #  2. 用于定義主(默認(rèn))服務(wù)器參數(shù)的標(biāo)識。
    #     響應(yīng)虛擬主機(jī)不能處理的請求。
    #     同時(shí)也提供所有虛擬主機(jī)的設(shè)置值。
    #  3. 虛擬主機(jī)的設(shè)置。在一個Apache服務(wù)器進(jìn)程中配置不同的IP地址和主機(jī)名。
    #
    # 配置和日志文件名:指定服務(wù)器控制文件命名時(shí),
    # 以 "/" (或 "drive:/" for Win32)開始,服務(wù)器將使用這些絕對路徑。
    # 如果文件名不是以"/"開始的,預(yù)先考慮服務(wù)器根目錄--
    #  因此 "logs/foo.log",如果服務(wù)器根目錄是"/usr/local/apache",
    #  服務(wù)器將解釋為 "/usr/local/apache/logs/foo.log".
    #
    # 注: 指定的文件名需要用"/"代替"""。
    # (例, "c:/apache" 代替 "c:"apache").
    # 如果省略了驅(qū)動器名,默認(rèn)使用Apache.exe所在的驅(qū)動器盤符
    # 建議指定盤符,以免混亂。
    #
    ### 部分 1: 全局環(huán)境
    #
    # 本部分的表示將影響所有Apache的操作
    # 例如,所能處理的并發(fā)請求數(shù)或配置文件地址
    #
    #
    # ServerType 可取值 inetd 或 standalone.  Inetd 只適用于Unix平臺
    #
    ServerType standalone
    #
    # ServerRoot: 目錄樹的根結(jié)點(diǎn)。服務(wù)器配置、出錯信息、日志文件都保存在根目錄下。
    #
    # 不要再目錄末尾加"/"
    #
    ServerRoot "C:/Program Files/Apache Group/Apache"
    #
    # PidFile: 服務(wù)器用于記錄啟動時(shí)進(jìn)程ID的文件。
    #
    PidFile logs/httpd.pid
    #
    # ScoreBoardFile: 用于保存內(nèi)部服務(wù)器進(jìn)程信息的文件。
    # 并非必須。 但是如果指定了(此文件當(dāng)運(yùn)行Apache時(shí)生成)
    # 那么必須確保沒有兩個Apache進(jìn)程共享同一個scoreboard文件。
    #
    ScoreBoardFile logs/apache_runtime_status
    #
    # 在標(biāo)準(zhǔn)配置下,服務(wù)器將順序讀取 httpd.conf(此文件可通過命令行中-f參數(shù)指定),
    # srm.conf 和 access.conf。
    # 目前后兩個文件是空的。為了簡單起見,建議將所有的標(biāo)識放在一個文件中。 
    # 以下兩條注釋的標(biāo)識,是默認(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: 是否允許保持連接(每個連接有多個請求)
    # "Off" -無效
    #
    KeepAlive On
    #
    # MaxKeepAliveRequests: 每個連接的最大請求數(shù)。
    # 設(shè)置為0表示無限制
    # 建議設(shè)置較高的值,以獲得最好的性能。
    #
    MaxKeepAliveRequests 100
    #
    # KeepAliveTimeout: 同一連接同一客戶端兩個請求之間的等待時(shí)間。
    #
    KeepAliveTimeout 15
    #
    # 在Win32下,Apache每次產(chǎn)生一個子進(jìn)程來處理請求。
    # 如果這個進(jìn)程死了,會自動產(chǎn)生另一個子進(jìn)程。
    # 所有的進(jìn)入請求在子進(jìn)程中多線程處理。
    # 以下兩個標(biāo)識控制進(jìn)程的運(yùn)行
    #
    #
    # MaxRequestsPerChild: 每個子進(jìn)程死亡之前最大請求數(shù)
    # 如果超過這個請求數(shù),子程序會自動退出,避免延期使用導(dǎo)致內(nèi)存溢出或其他問題。
    # 大部分系統(tǒng),并不需要此設(shè)置,
    # 但是部分,象Solaris,確實(shí)值得注意。
    # 對Win32, 可設(shè)置為0 (無限制)
    # 除非有另外的考慮。
    #
    # 注: 此值不包括在每個連接初始化請求后,"keptalive"請求
    #       例如, 如果一個子進(jìn)程處理一個初始化請求和10個后續(xù)"keptalive"請求,
    #       在這個限制下,只會記為一個請求。
    #
    MaxRequestsPerChild 0
    #
    # ThreadsPerChild: 服務(wù)器所允許的并發(fā)線程數(shù)。
    # 此值的設(shè)置取決于服務(wù)器的響應(yīng)能力(約多的請求在同一時(shí)間激活,則每個請求的處理時(shí)間越慢)
    # 和服務(wù)器所允許消耗的系統(tǒng)資源。
    #
    ThreadsPerChild 50
    #
    # Listen: 允許將Apache綁頂?shù)街付ǖ腎P地址和端口,作為默認(rèn)值的輔助選項(xiàng)。
    # 參見 <VirtualHost>
    #
    #Listen 3000
    #Listen 12.34.56.78:80
    #
    # BindAddress: 通過此選項(xiàng)可支持虛擬主機(jī)。
    # 此標(biāo)識用于告訴服務(wù)器監(jiān)聽哪個IP地址。
    # 包括:"*", IP地址, 或域名.
    # 參見 <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)操作,取消以下行的注釋并且修改指定模塊列表。
    #
    # 警告:這是高級選項(xiàng)。可能導(dǎo)致服務(wù)器崩潰。
    # 沒有專家的指導(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
    #
    # 動態(tài)共享對象(Dynamic Shared Object,DSO)
    #
    # 要使用基于DSO的功能模塊,需要替換此處相應(yīng)的
    #  `LoadModule' 行。這樣在使用之前這些包含的標(biāo)識都將生效。
    # 有關(guān)DSO及至的詳細(xì)資料請看Apache1.3版中的README.DSOSO。
    # 運(yùn)行"apche -l"將列表顯示Apache內(nèi)奸的模塊(類似標(biāo)準(zhǔn)的連接已經(jīng)生效)
    #
    # 注:模塊載入的順序很重要。沒有專家的建議,不要修改以下的順序。
    #
    #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)識用于主服務(wù)器所有的設(shè)置值,
    # 響應(yīng)任何<VirtualHost>定義不處理的請求
    # 這些值同時(shí)給你稍后在此文件中定義的<VirtualHost>提供默認(rèn)值。
    #
    # 所有的標(biāo)識可能會在<VirtualHost>中出現(xiàn)。
    # 對應(yīng)的默認(rèn)值會被虛擬主機(jī)重新定義覆蓋。
    #
    #
    # Port: Standalone服務(wù)器監(jiān)聽的端口。 
    # 在Apache能夠監(jiān)聽指定端口前,需要在防火墻中進(jìn)行設(shè)置。
    # 其它運(yùn)行httpd的服務(wù)器也可能影響此端口。  Disable
    # 如果遇到問題,請關(guān)閉所有的防火墻、安全保護(hù)和其他的服務(wù)。
    # Windos NT的"NETSTAT -a"指令會有助于問題的分析。
    #
    Port 80
    #
    # ServerAdmin: 你的地址。如果服務(wù)器有任何問題將發(fā)信到這個地址。
    # 這個地址會在服務(wù)器產(chǎn)生的某些頁面中出現(xiàn),例如,錯誤報(bào)告。
    #
    ServerAdmin chenyl98@mails.tsinghua.edu.cn
    #
    # ServerName 允許設(shè)置主機(jī)名。如果與程序獲得的不同,主機(jī)名將返回客戶端。
    # (例如,用"www"代替主機(jī)真實(shí)的名字)
    #
    # 注: 主機(jī)名不能隨便指定。必須是你的機(jī)器有效的DNS名稱。否則無法正常工作。
    # 如果不能理解,傾向你的網(wǎng)絡(luò)管理員詢問。
    # 如果你的主機(jī)沒有注冊DNS名,可在此輸入IP地址。
    # 此時(shí)必須用IP地址來訪問。(如, http://123.45.67.89/)
    # 這樣扔可以完成重新定向的工作。
    #
    # 127.0.0.1 是TCP/IP的本地環(huán)路地址, 通常命名為localhost.
    # 機(jī)器默認(rèn)此地置為本身。 如果只是使用Apache來進(jìn)行本地測試和開發(fā),
    # 可使用127.0.0.1 作為服務(wù)器名.
    #
    #ServerName new.host.name

    #
    # DocumentRoot: 放置服務(wù)文檔的目錄。
    # 默認(rèn)狀態(tài)下,所有的請求都以這個目錄為基礎(chǔ)。
    # 但是直接符號連接和別名可用于指向其他位置。
    #
    DocumentRoot "D:/www_root"
    #
    # Apache訪問的每個目錄可設(shè)置相關(guān)的服務(wù)和特性是允許或(和)不允許。
    # (同樣影響其子目錄)
    #
    # 首先,設(shè)置"default"地址只有最基本的權(quán)限。
    #
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    #
    # 注意從現(xiàn)在開始必須制定開啟特殊的權(quán)限。
    # 這樣就不會產(chǎn)生意想不到的結(jié)果。
    # 請仔細(xì)確認(rèn)。
    #
    #
    # 這個地址應(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)請求~user時(shí),追加到用戶主目錄的路徑地址。
    #
    # 在Win32下,并不要求指定為用戶登陸的主目錄。
    # 因此可使用以下的格式。
    # 詳細(xì)參照文檔UserDir
    #
    <IfModule mod_userdir.c>
        UserDir "f:/homepages/"
    </IfModule>
    #
    # 控制訪問UserDir目錄.  The following is an example
    # 以下是一個站點(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目錄索引文件名。
    # 用空格來分隔多個文件名。
    #
    <IfModule mod_dir.c>
        DirectoryIndex index.html
    </IfModule>
    #
    # AccessFileName: 每個目錄中用于控制訪問信息的文件名。
    #
    AccessFileName .htaccess
    #
    # 以下行防止客戶端可訪問 .htaccess 文件。
    # 因?yàn)?.htaccess文件通常包含授權(quán)信息,
    # 處于安全的考慮不允許訪問。
    # 如果想讓訪客看到.htaccess文件的內(nèi)容,
    # 可將這些行注釋。
    # 如果修改了上面的AccessFileName,
    # 請?jiān)诖诉M(jìn)行相應(yīng)的修改。
    #
    # 同時(shí),一般會用類似.htpasswd的文件保存密碼。
    # 這些文件同樣可以得到保護(hù)。
    #
    <Files ~ "^".ht">
        Order allow,deny
        Deny from all
    </Files>
    #
    # CacheNegotiatedDocs: 默認(rèn)下,Apache對每個文檔發(fā)送"Pragma: no-cache"
    # 這將要求代理服務(wù)器不緩存此文檔。
    # 取消下列行的可取消這個屬性,這樣代理服務(wù)器將緩存這些文檔。
    #
    #CacheNegotiatedDocs
    #
    # UseCanonicalName:  (1.3新增)  當(dāng)此設(shè)置為on時(shí),
    # 無論何時(shí)Apache需要構(gòu)建一個自引用的URL(指向響應(yīng)來源服務(wù)器),
    # 它將用ServerName和Port來構(gòu)建一個規(guī)范的格式。
    # 當(dāng)此設(shè)置為off時(shí),Apache將使用客戶端提供的"主機(jī)名:端口"
    # 這將同時(shí)影響CGI腳本中的SERVER_NAME和SERVER_PORT
    #
    UseCanonicalName On
    #
    # TypesConfig 記錄媒體類型(mime.types)文件或類似的東東放置的位置
    #
    <IfModule mod_mime.c>
        TypesConfig conf/mime.types
    </IfModule>
    #
    # DefaultType 是服務(wù)器處理未確認(rèn)類型的文件,如為止的擴(kuò)展名,的默認(rèn)類型。
    # 如果你的服務(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)識來確定文件類型。
    # MIMEMagicFile指示模塊文件標(biāo)識的定義所在的位置。
    # mod_mime_magic不是默認(rèn)服務(wù)器的一部分。
    # (必須自行用LoadModule來追加 [見'全局環(huán)境'部分的 DSO 章節(jié)],
    # 或者在編譯服務(wù)器時(shí)包含mod_mime_magic部分)
    # 包含在 <IfModule> 中.
    # 就是說,如果該模塊是服務(wù)器的一部分,MIMEMagicFile標(biāo)識將執(zhí)行。
    #
    <IfModule mod_mime_magic.c>
        MIMEMagicFile conf/magic
    </IfModule>
    #
    # HostnameLookups: 注冊客戶端的機(jī)器名或IP地址。
    # 例如: www.apache.org (on) 或 204.62.129.132 (off).
    # 默認(rèn)為off,因?yàn)閷τ诰W(wǎng)絡(luò)來說,最好讓人們有意識的設(shè)置為on,
    # 因?yàn)殚_啟此功能意味著每個客戶請求將導(dǎo)致至少向name服務(wù)器發(fā)送一個lookup請求
    #
    HostnameLookups Off
    #
    # ErrorLog: 錯誤記錄文件的地址
    # 如果不在<VirtualHost>內(nèi)指定ErrorLog
    # 改虛擬主機(jī)的錯誤心細(xì)將記錄到此處。
    # 如果在<VirtualHost>中明確指定了錯誤記錄文件,
    # 則錯誤將記錄在那兒而不是這兒。
    #
    ErrorLog logs/error.log
    #
    # LogLevel: 控制記錄在error.log中信息的個數(shù).
    # 可能的值:debug, info, notice, warn, error, crit,
    # alert, emerg.
    #
    LogLevel warn
    #
    # 以下標(biāo)識定義CustomLog標(biāo)識使用的格式。(見下)
    #
    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
    #
    # 訪問記錄的位置和格式 (功用的記錄文件格式).
    # 如果不在<VirtualHost>中定義記錄文件,
    # 那些訪問記錄就將保存在這兒。  Contrariwise, if you *do*
    # 反之,如果指定了記錄文件,那么訪問記錄將記錄在那兒而不是這個文件中。
    #
    CustomLog logs/access.log common
    #
    # 如果希望使用代理和參考的記錄文件, 取消以下標(biāo)識的注釋符
    #
    #CustomLog logs/referer.log referer
    #CustomLog logs/agent.log agent
    #
    # 如果想在一個文件中記錄訪問、代理、參考信息(復(fù)合的記錄格式)
    # 可使用以下標(biāo)識
    #
    #CustomLog logs/access.log combined
    #
    # 在服務(wù)器產(chǎn)生的頁面(如錯誤文檔信息,F(xiàn)TP目錄列表等等,不包括CGI產(chǎn)生的文檔)中
    # 增加一條服務(wù)器版本和虛擬主機(jī)名的信息。
    # 設(shè)置為"EMail"將包含mailto: ServerAdmin的連接.
    # 可選值:  On | Off | EMail
    #
    ServerSignature On
    #
    # 默認(rèn)下,Apache用工作行解析所有CGI腳本
    # 此注釋行(腳本的第一行)包括'#'和'!'后面跟著執(zhí)行特殊腳本的程序路徑,
    # 對perl腳本來說是C:"Program Files"Perl目錄中的perl.exe。
    # 工作行如下:
       #!c:/program files/perl/perl
    # 注意真實(shí)的工作行不能有縮進(jìn),必須是文件的第一行。
    # 當(dāng)然,CGI進(jìn)程必須通過適當(dāng)?shù)腟criptAlias或ExecCGI選項(xiàng)標(biāo)識來啟動。
    #
    # 然而,Windows下的Apache即允許以上的Unix方式,也可以通過注冊表的形式。
    # 用注冊表執(zhí)行文件的方法同在Windows資源管理器中雙擊運(yùn)行的注冊方法相同。
    # 此腳本操作可在Windows資源管理器的"查看"菜單中設(shè)置。
    # "文件夾選項(xiàng)",然后查看"文件類型"。點(diǎn)擊編輯按鈕。
    # 修改操作屬性。Apache 1.3會嘗試執(zhí)行‘Open'操作,
    # 如果失敗則會嘗試工作行
    # 這個屬性在Apache release 2.0中會有改變.
    #
    # 每個機(jī)制都有自身特定的安全弱點(diǎn),這樣可能導(dǎo)致別人運(yùn)行你不希望調(diào)用的程序。
    # 最佳的解決方案還在討論中。
    #
    # 要是這個Windows的特殊屬性生效 (同時(shí)會是Unix屬性無效)
    # 取消下列標(biāo)識的注釋符。
    #
    #ScriptInterpreterSource registry
    #
    # 上面的標(biāo)識可在<Directory>塊或.htaccess文件中單獨(dú)替換。
    # 可選擇'registry' (Windows behavior)或 'script'
    # (Unix behavior) option, 將覆蓋服務(wù)器的默認(rèn)值。
    #
    #
    # Aliases: 可無限制的追加別名。格式如下:
    # Alias 假名 真名
    #
    <IfModule mod_alias.c>
        #
        # 注意如果假名中包含'/',服務(wù)器會在當(dāng)前URL中發(fā)出請求。
        # 因此"/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: 控制哪個目錄包含服務(wù)器腳本。
        # ScriptAlias本質(zhì)行和Aliases一樣。, except that
        # 區(qū)別在于真名目錄中的文檔被看作是一個應(yīng)用程序。
        # 請求時(shí)由服務(wù)器運(yùn)行而不是發(fā)往客戶端。
        # "/"符號的規(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腳本說明
    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腳本說明結(jié)束
    #
    # Redirect 允許告訴客戶端服務(wù)器上曾經(jīng)有的文檔,但是現(xiàn)在不存在了。
    # 并且可以告訴客戶端到哪兒去尋找。
    # 格式: Redirect old-URL new-URL
    #
    #
    # 控制服務(wù)器目錄列表顯示的標(biāo)識
    #
    <IfModule mod_autoindex.c>
        #
        # FancyIndexing標(biāo)識是使用特定的目錄檢索還是標(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ù)器生成的檢索的某個文件后追加小段說明。
        # 此項(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文件。
        # 并且會追加到目錄列表的最后。
        #
        # HeaderName 是目錄中需要預(yù)先顯示內(nèi)容的文件名。
        #
        # 如果MultiViews在選項(xiàng)中,作為結(jié)果,服務(wù)器將先找name.html,
        # 如果存在就包含它。如果name.html不存在,
        # 服務(wù)器會繼續(xù)尋找name.txt。如果存在就作為純文本包含進(jìn)來。
        #
        ReadmeName README
        HeaderName HEADER
        #
        # IndexIgnore是一系列的文件名。目錄索引將忽略這些文件并且不包含在列表中。
        # 允許使用通配符。
        #
        IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
    </IfModule>
    # indexing標(biāo)識結(jié)束
    #
    # 文件類型
    #
    <IfModule mod_mime.c>
        #
        # AddEncoding 可用于特殊瀏覽器(Mosaic/X 2.1+)快速傳輸壓縮信息。
        # 注:并不是所有的服務(wù)器都支持。
        # 除了名字相似,以下Add*標(biāo)識對上面的FancyIndexing定制標(biāo)識無影響。
        #
        AddEncoding x-compress Z
        AddEncoding x-gzip gz tgz
        #
        # AddLanguage用于指定文檔的語言。
        # 可以使用content標(biāo)簽指定每個文件的語言。
        #
        # 注 1: 后綴不必與所用語言的關(guān)鍵字相同。
        #   --- 波蘭語(Polish,標(biāo)準(zhǔn)代碼為pl)的文檔可以用
        #  "AddLanguage pl .po" 來避免與perl腳本文件混淆。
        #
        # 注 2: 以下例子表明兩個字母的語言縮寫和兩個字母的國家縮寫并不一定相同。
        # E.g. 'Danmark/dk' 對比 'Danish/da'.
        #
        # 注 3: 其中'ltz'使用了三個字符,與RFC的規(guī)定不同。
        # 但是這個問題正在修訂中,并且重新清理RFC1766
        #
        # 丹麥Danish (da) - 荷蘭Dutch (nl) - 英國English (en) - 愛薩尼亞Estonian (ee)
        # 法國French (fr) - 德國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)
        # 俄國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ōu)先級。
        #
        # 優(yōu)先級降序排列
        # 在此處按照字母順序,可自行修改
        #
        <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)配件,參見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ò)展名映射到處理方法上。
        # 與文件類型無關(guān)。此特性可內(nèi)建到服務(wù)器中或者追加在操作指令中(見下)
        #
        # 如果希望用服務(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)識:
        #
        #AddHandler imap-file map
        #
        # 要激活type maps使用:
        #
        #AddHandler type-map var
    </IfModule>
    # 文檔類型說明結(jié)束
    #
    # Action 定義在文件匹配時(shí)執(zhí)行相應(yīng)的腳本。
    # 可簡化常用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
    #
    # 可定制的錯誤響應(yīng)(Apache類型)
    #  共三種風(fēng)格:
    #
    #    1) 純文本
    #ErrorDocument 500 "The server made a boo boo.
    #  注: 第一個"號用于表示是文本,實(shí)際不輸出
    #
    #    2) 本地重定向
    #ErrorDocument 404 /missing.html
    #  to redirect to local URL /missing.html
    #ErrorDocument 404 /cgi-bin/missing_handler.pl
    #  注:可重定向到任何一個服務(wù)器端的腳本或文檔
    #
    #    3) 外部重定向
    #ErrorDocument 402 http://some.other_server.com/subscription_info.html
    #  注: 大部分與初始請求關(guān)聯(lián)的環(huán)境變量對這樣的腳本無效。
    #
    #
    # 基于瀏覽器的定制操作
    #
    <IfModule mod_setenvif.c>
        #
        # 以下標(biāo)識修改普通的HTTP響應(yīng)操作。
        # 第一個標(biāo)識針對Netscape2.x和其他無此功能的瀏覽器取消保持激活狀態(tài)的功能
        # 這些瀏覽器在執(zhí)行這些功能時(shí)會出錯。
        # 第二個標(biāo)識針對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)識通過不產(chǎn)生基本的1.1響應(yīng)取消對違反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)識結(jié)束
    #
    # 允許使用URL"http://servername/server-status"的形式查看服務(wù)器狀態(tài)報(bào)告
    # 修改 ".your_domain.com"來匹配相應(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),
    # 來遠(yuǎn)程察看服務(wù)器配置報(bào)告。
    # 修改 ".your_domain.com"來匹配相應(yīng)的域名以激活此功能
    #
    #<Location /server-info>
    #    SetHandler server-info
    #    Order deny,allow
    #    Deny from all
    #    Allow from .your_domain.com
    #</Location>
    #
    # 據(jù)報(bào)有人試圖利用一個老的1.1漏洞。
    # 這個漏洞與CGI腳本在Apache服務(wù)器上分布有關(guān)。
    # 通過取消下面幾行的注釋符,可以將此類攻擊記錄轉(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)識。取消下列行的注釋符可激活代理服務(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
        #
        # 可修改下列各行并取消注釋符來激活緩存。
        # (沒有CacheRoot標(biāo)識就不使用緩存)
        #
    #    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)識結(jié)束
    ### 部分 3: 虛擬主機(jī)
    #
    # 虛擬主機(jī): 如果希望在一臺服務(wù)器上實(shí)現(xiàn)多個域名和主機(jī)名的服務(wù),
    # 可設(shè)置VirtualHost來實(shí)現(xiàn)。Most configurations
    # 大部分的設(shè)置使用基于名稱的虛擬主機(jī),這樣服務(wù)器就不必為IP地址操心。
    # 這些用星號在下面的標(biāo)識中標(biāo)出。
    #
    # 在試圖設(shè)置虛擬主機(jī)前
    # 請閱讀<URL:http://www.apache.org/docs/vhosts/>中的文檔。
    # 以了解細(xì)節(jié)問題。
    #
    # 可用命令行參數(shù) '-S'來確認(rèn)虛擬主機(jī)的設(shè)置。
    #
    #
    # 使用基于名稱的虛擬主機(jī)
    #
    #NameVirtualHost *
    #
    # 虛擬主機(jī)實(shí)例:
    # 幾乎所有的Apache標(biāo)識都可用于虛擬主機(jī)內(nèi)。
    # 第一個VirtualHost部分用于申請一個無重復(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) | 評論 (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
    配置 (目錄只看明白這一種)其它方法大家有空說一下。
    例如限制soft目錄下的文件下載速度,修改httpd.conf
    <Directory "/var/www/html/soft">;
    BandWidthModule On
    BandWidth all 30720
    </Directory>;

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

    詳細(xì)說明見bw_mod-0.6.txt

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

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

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

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

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

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

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

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

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

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

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

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

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

    2.安裝, 配置
    把mod_gzip放到你的apache的源代碼目錄下,新建一個mod_gzip目錄如果需要補(bǔ)丁(針對1.3.17.la版) 還需運(yùn)行:
    patch mod_gizp.c
    按你需要,在配置中選擇動態(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確保配置修改無誤。
    然后用 apachectl restart 指令重起服務(wù)。

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

    MOD_GZIP configuration

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

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


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

    常用鏈接

    留言簿(6)

    隨筆分類(62)

    隨筆檔案(90)

    文章檔案(9)

    相冊

    友情鏈接

    搜索

    •  

    積分與排名

    • 積分 - 325074
    • 排名 - 172

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV日韩AV永久无码色欲| 国产免费AV片在线观看| 99久久免费国产香蕉麻豆| 亚洲妇熟XXXX妇色黄| 99麻豆久久久国产精品免费| 亚洲第一页日韩专区| 免费的黄色的网站| 亚洲精品无码av天堂| 91福利免费网站在线观看| 精品亚洲综合久久中文字幕| 美女被cao网站免费看在线看| 亚洲激情在线视频| 91频在线观看免费大全| 国产精品高清视亚洲一区二区| 在线免费观看一区二区三区| 亚洲欧美成人av在线观看| 午夜国产羞羞视频免费网站| 永久免费无码日韩视频| 亚洲αv在线精品糸列| 67pao强力打造高清免费| 亚洲人成色777777精品| 内射无码专区久久亚洲| 91免费国产视频| 亚洲电影免费观看| 国产高清免费的视频| 在线观看片免费人成视频播放 | 亚洲成av人片不卡无码久久| caoporn成人免费公开| 亚洲AV日韩精品久久久久久久| 国产精品永久免费10000| 免费亚洲视频在线观看| 亚洲深深色噜噜狠狠爱网站| 69影院毛片免费观看视频在线| 亚洲av永久无码天堂网| 亚洲男人的天堂www| 亚洲第一成年免费网站| 一二三四在线观看免费中文在线观看| 亚洲va国产va天堂va久久| 女人张开腿等男人桶免费视频 | 91天堂素人精品系列全集亚洲| 拨牐拨牐x8免费|