精做高難度防水抓漏/壁癌/油漆等工程
責任施工、合約保固!
代書新屋裝潢.舊屋裝修.合格裝潢
裝修證照.是專業施工品質的保障

首頁  •  tw 論壇 • 程式設計討論     • 

使用mod_limitipconn.c來限制apache的並發

房東:泰王
發表時間:2007-02-21
[檢舉]


本文介紹透過mod_limitipconn模塊來限制apache的並發連接數的詳細方法。(2003-01-14 13:34:08)

--------------------------------------------------------------------------------
By 風過留楓, 出處︰Linux技術中堅站 冷風


  下載mod_limitipconn.c


  http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
  http://dominia.org/djao/limit/mod_limitipconn-0.04-1.i386.rpm
    (proxy client detection feature not enabled)
  http://dominia.org/djao/limit/mod_limitipconn-0.04-1.src.rpm


  
  我用的是tar包下載的是mod_limitipconn-0.04.tar.gz,(該模塊已經可以支援apache2)在伺服器上執行# wget
http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz ;下載到本地

  然後執行下面的命令編譯安裝.我的apache位於/usr/local/apache目錄

  解壓縮:


  [root@ns chenlf]# tar zxvf mod_limitipconn-0.04.tar.gz
    mod_limitipconn-0.04/
    mod_limitipconn-0.04/Makefile
    mod_limitipconn-0.04/README
    mod_limitipconn-0.04/apachesrc.diff
    mod_limitipconn-0.04/mod_limitipconn.c
    mod_limitipconn-0.04/ChangeLog



  編譯安裝:


  [root@ns chenlf]# cd mod_limitipconn-0.04
  [root@ns mod_limitipconn-0.04]# ls
    apachesrc.diff   ChangeLog   Makefile
    mod_limitipconn.c README
  [root@ns mod_limitipconn-0.04]
    # /usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c
    gcc -DLINUX=22 -I/usr/include/db1 -fpic -DSHARED_MODULE -I
      /usr/local/apache/include -c mod_limitipconn.c
    gcc -shared -o mod_limitipconn.so mod_limitipconn.o
      [activating module `limitipconn in /usr/local
      /apache/conf/httpd.conf]
    cp mod_limitipconn.so /usr/local/apache/libexec/mod_limitipconn.so
    chmod 755 /usr/local/apache/libexec/mod_limitipconn.so
    cp /usr/local/apache/conf/httpd.conf
      /usr/local/apache/conf/httpd.conf.bak
    cp /usr/local/apache/conf/httpd.conf.new
      /usr/local/apache/conf/httpd.conf
    rm /usr/local/apache/conf/httpd.conf.new



  修改配置檔案:

  1全局控制:

  在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 >



  2 局部限制,你也可以在虛擬主機的配置檔案裡設定IP限制,方法是完全一樣:


  < VirtualHost xx.xxx.xx.xx >
    ServerAdmin [email protected]
    DocumentRoot /home/my
    ServerName www.my.com
  < IfModule mod_limitipconn.c >
   < Location / > # 所有虛擬主機的/目錄
      MaxConnPerIP 5 # 每IP只允許\3個並發連接
  NoIPLimit image/* # 對圖片不做IP限制
   < /Location >
  < Location /mp3 > # 所有主機的/mp3目錄
      MaxConnPerIP 2 # 每IP只允許\一個連接請求
      OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的檔案
  < /Location >
  < /IfModule >
  ErrorLog /home/my/logs/error_log
  CustomLog /home/my/logs/access_log common
< /VirtualHost >



  3 此外必須將apache的ExtendedStatus設定為ON.在httpd.conf找到


  # ExtendedStatus On



  去掉前面的註釋即可

  好了,全部配置結束,重起apache就可以生效了



  • 贊助網站       

    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!
    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務

  • 1 樓住戶:小橋
    發表時間:2007-02-23
    [檢舉]

    httpd 升級與 limitipconn 模組安裝
    目的: 在已架設網站的 Apache HTTP Server 升級版本, 並加入 mod_limitipconn (限制同一 IP 最大 Connection 數量) 模組

    環境: Fedora Core 1 httpd 2.0.47 → 2.0.55

    下載並解包相關 Source Tar Ball

    cd /usr/local/src
    wget http://apache.cdpa.nsysu.edu.tw/httpd/httpd-2.0.55.tar.bz2
    wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz
    tar jxf httpd-2.0.55.tar.bz2
    tar zxf mod_limitipconn-0.22.tar.gz

    安裝 Apache HTTP Server 2.0.55

    cd httpd-2.0.55
    patch -p1 < ../mod_limitipconn-0.22/apachesrc.diff
    ./buildconf
    ./configure --prefix=/usr/local/apache2
    make
    make install

    安裝 mod_limitipconn 模組

    cd ../mod_limitipconn-0.22
    vi Makefile

    APXS=/usr/local/apache2/bin/apxs
    APACHECTL=/usr/local/apache2/bin/apachectl

    make
    make install

    調整環境, 修改新的 httpd.conf

    cd /usr/local/apache2
    rmdir logs
    ln -s /var/log/httpd logs 繼續使用原來存放 log 的地方 (/var/log/httpd)
    ln -s /var/run 讓 httpd.pid 一樣置於 /var/run (for logrotate)

    cp /usr/lib/httpd/modules/* ./modules 將原先的 module 複製過來

    cd conf
    mv ssl.conf ssl.conf.bak
    ln -s /etc/httpd/conf.d/ssl.conf
    vi ssl.conf

    #LoadModule ssl_module... 待會在 httpd.conf 加入 LoadModule ssl_module, 所以這邊註解掉

    vi httpd.conf 調整相關設定, 以符合原本的網站環境

    修改:

    User nobody --> apache
    Group #-1 --> apache

    PidFile logs/httpd.pid --> run

    #ExtendedStatus On --> ExtendedStatus On 取消此行註解才能使用 limitipconn 模組

    DocumentRoot "/usr/local/apache2/htdocs" --> "/var/www/html"

    --> "/var/www/html"

    ServerTokens Full --> Prod

    ServerSignature On --> Off 修改以上這兩行是為了隱藏伺服器資訊

    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" --> "/var/www/cgi-bin/"

    --> "/var/www/cgi-bin"

    新增:

    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule ssl_module modules/mod_ssl.so
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule php4_module modules/libphp4.so 視需求載入相關模組

    AddType application/x-httpd-php .php 要能執行 php 網頁, 除載入模組外, 記得加上這行



    DAVLockDB /var/lib/dav/lockdb 想使用 WebDAV 一定要加上這行







    MaxConnPerIP 2 每個 IP 最多 2 個 Connection





    更多的 mod_limitipconn 設置參考

    停止原 HTTP Server 運作, 啟動新安裝之 HTTP Server

    /etc/init.d/httpd stop
    /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf -k start

    開機時, 自動啟動新安裝之 HTTP Server

    chkconfig httpd stop
    vi /etc/rc.d/rc.local

    /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf -k start







     共 1 人回應  選擇頁數 【第1 頁】 

    姓名:
    佈告內容: