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

          先來了解下web所面臨的安全風險

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

          緩沖區溢出,這種攻擊很普遍,攻擊者利用CGI程序編寫一些缺陷程序偏離正常的流程,程序使用靜態的內存分配,攻擊者就可以發送一個超長的請求使緩沖區溢出,比如,一些perl編寫的處理用戶請求的網關腳本,一但緩沖區溢出,攻擊者就可以執行惡意指令

          非法獲取root權限
          如果Apache以root權限運行,系統上一些程序的邏輯缺陷或緩沖區溢出漏洞,會讓攻擊者很容易在本地系統獲取linux服務器上的管理者權 限,在一些遠程情況下,攻擊者會利用一些以root身份執行的有缺陷的系統守護進程來取得root權限,或利用有缺陷的服務進程漏洞來取得普通用戶權限, 以遠程登陸,進而控制整個系統。

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

          一:勤打補丁
          你必須要相信這個是最有用的手段,緩沖區溢出等漏洞都必須使用這種手段來防御,勤快點相信對你沒有壞處
          在http:www.apache.org上最新的changelog中都寫有:bug fix ,security bug fix的字樣,做為負責任的管理員要經常關注相關漏洞,及時升級系統添加補丁。使用最新安全版本對加強apache至關重要

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

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

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

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

          這樣的目錄結構是比較安全的,因為目錄之間獨立,某個目錄權限錯誤不會影響到其他目錄

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

          必須保證apache使用一個專門的用戶與組,不要使用系統預定的帳戶,比如nobody用戶與nogroup組
          因為只有root用戶可以運行apache,DocumentRoot應該能夠被管理web站點內容的用戶訪問和使用apache服務器的 apache用戶與組訪問,例如,希望“test”用戶在web站點發布內容,并且可以以httpd身份運行apache服務器,可以這樣設定
          groupadd webteam
          usermod -G webteam test
          chown -R httpd.webteam /www/html
          chmod -R 2570 /www/htdocs
          只有root能訪問日志,推薦這樣的權限
          chown -R root.root /etc/logs
          chown -R 700 /etc/logs

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

          六:apache服務器訪問控制
          apache的access.conf文件負責設置文件的訪問權限,可以實現互聯網域名和ip地址的訪問控制
          如允許192.168.1.1到192.168.1.254的主機訪問,可以這樣設定
          order deny,allow
          deny from all
          allow from pair 192.168.1.0/255.255.255.0

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

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

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

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

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

          減少SSI腳本風險,如果用exec等SSI命令運行外部程序,也會存在類似CGI腳本風險,除了內部調試程序時,應使用
          option命令禁止其使用:
          Option IncludesNOEXEC

          十一:使用ssl加固Apache
          使用具有SSL功能的服務器,可以提高網站敏感頁的安全性能,SSL工作與TCP/IP協議和HTTP協議之間
          SSL可以加密互聯網上傳遞的數據流,提供身份驗證,在線購物而不必擔心別人竊取信用卡信息,在基于電子商務和基于web郵件的地方非常重要。
          SSL的應用相對還是比較麻煩的,有需要的話,可以發貼或查看資料,這幾就不多寫,篇幅不夠
          posted @ 2009-09-03 18:01 藍劍 閱讀(13689) | 評論 (1)編輯 收藏
          從網上找到的,不知道好不好用,先存上,以后有機會測試一下。
          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) {
             }
          }
          }

          我計算出來的:oLR8ZC-855550-67595356781722504
          posted @ 2008-12-18 09:22 藍劍 閱讀(2259) | 評論 (1)編輯 收藏
          Firestorm是一個用JAVA寫的代碼生成工具,可以替你節省很多的代碼量,可以說同類軟件中功能最強的一個。

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

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

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

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

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

          讓我們來看看具體步驟:


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

              這個方法是對公鑰進行檢驗,修改的思路就是直接讓他返回一個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文件.這里我們需要寫一個小程序來完成實現:
                  import javassist.ClassPool;
                  import javassist.CtClass;
                  import javassist.CtMethod;


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

                          //設置目標類的路徑,確保能夠找到需要修改的類,這里我指向firestorm.jar
                          //解包后的路徑
                          pool.insertClassPath("d:/work/firestorm/firestorm") ;    
                          
                          //獲得要修改的類
                          CtClass cc = pool.get("com.codefutures.if.if");
                          //設置方法需要的參數
                          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 藍劍 閱讀(7705) | 評論 (0)編輯 收藏
          隨著在線人數的不斷增加,WDA的附件每天增量很多,流量越來越大,從MRTG監控到,忙時達到10M,導致空間商限制了WDA的流量。
          分析流量大的原因,主要是因為上傳和下載附件占用了帶寬,找了很多解決辦法,終于用apache的bw_mod模塊解決了。
          bw_mod是for apache2的,首先到http://apache.ivn.cl/下載最新的bw_mod模塊,目前是bw_mod v0.6。
             然后運行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 文件。
          如果安裝過程沒有出錯的話,就可以開始進行設置了。
          在httpd.conf中的LoadModule bw_module          modules/bw_mod-0.6.so   下面加入以下設置指令:
                     BandWidthModule On    
          #啟動bw_mod模塊
                    BandWidth  all 0
                    #總的帶寬不用限制
                    LargeFileLimit .rar 30 23000
          #限制所有大于30K的后綴名為.rar的文件的速率為23000字節/秒,即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
                 安裝完畢后,網站速度有明顯好轉。
          posted @ 2008-09-16 11:17 藍劍 閱讀(798) | 評論 (0)編輯 收藏
          限制并發數
          下載模塊:

          到官方網址: 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 個并發線程數。 server2 被限制為 30 個并發線程數。 server3 沒有被限制。

          注:需 mod_status 的 ExtendedStatus On 支持!!

          如超出限制的并發數在客戶端就會出現503錯誤

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

          限制IP連接數

          到這里下載模塊 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  ß-----這里要按你自己的路徑設置
          make install APXS=/usr/local/apache/bin/apxs ß-----這里要按你自己的路徑設置

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

          < Location /mp3 >  # 所有主機的/mp3目錄
          MaxConnPerIP 1         # 每IP只允許一個連接請求   
          OnlyIPLimit audio/mpeg video    # 該限制只對視頻和音頻格式的文件
              < /Location >
          < /IfModule >



          或者虛擬主機的:
          < 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 >    # 所有主機的/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請設置為你的路徑

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

          重啟你的apache

          相關文檔

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

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

          詳細說明見bw_mod-0.6.txt

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

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

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

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

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

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

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

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

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

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

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

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

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

          2.安裝, 配置
          把mod_gzip放到你的apache的源代碼目錄下,新建一個mod_gzip目錄如果需要補丁(針對1.3.17.la版) 還需運行:
          patch mod_gizp.c
          按你需要,在配置中選擇動態DSO或靜態編譯進apache系統。如何處理在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$"

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

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

          MOD_GZIP configuration

          你再用IE4或netscape認真的全面測試一遍,沒有問題后你就可以讓你的用戶很開心的發現'XX網站現在好快哦。'

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


          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(6)

          隨筆分類(62)

          隨筆檔案(90)

          文章檔案(9)

          相冊

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 326031
          • 排名 - 172

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 黑龙江省| 青阳县| 和林格尔县| 日土县| 贡嘎县| 安福县| 新安县| 布拖县| 东丰县| 北宁市| 株洲市| 东乡族自治县| 罗山县| 余庆县| 仁化县| 日土县| 博罗县| 兴山县| 政和县| 靖安县| 武乡县| 奉节县| 兴文县| 桐城市| 宽城| 元阳县| 龙井市| 奉贤区| 康马县| 肇州县| 江油市| 古浪县| 乐陵市| 女性| 清流县| 五指山市| 论坛| 富川| 长岭县| 兰西县| 桦南县|