nginx 限速

來源:互聯網
上載者:User

nginx 是個不錯的web伺服器,提供了全方位的限速功能,主要的功能模組是ngx_http_core_module、ngx_http_limit_conn_module和 ngx_http_limit_req_module,第一個模組中有limit_rate功能(限網速頻寬),後兩個模組從字面上講,功能分別是限制串連(limit connection)和限制請求(limit request),這幾個模組預設都編譯進了nginx核心。


所有的限制都是針對IP的,因此對CC、DDOS有一定的防禦作用。


限頻寬很容易明白,直接上例子

location /mp3 {limit_rate 200k;}

有一種方式可以讓限速更加人性化,即傳輸一定流量後開始限速,


比如先全速傳輸1M,然後開始限速:

location /photo {limit_rate_after 1m;limit_rate  100k;}

接下來講限並發數和請求數。


為什麼有這兩個模組呢?因為我們知道,一個頁面通常有多個子模組,譬如5張圖片,那麼我們請求這個頁面時發起了一個串連,但是這一個串連包含了5次圖片請求,也就是說,一個串連可以發起多次請求。我們為了維持使用者體驗,是限制串連數還是請求數,要根據實際需要進行選擇。


1、限制串連數

要限制串連,必須先有一個容器對串連進行計數,在http段加入如下代碼:

limit_conn_zone $binary_remote_addr zone=addr:5m;

這樣就在記憶體中建立了一個5M大小,名為addr的限速池(每個串連佔用32或64位元組,5m大小可容納數以萬計的串連,通常是足夠的,如果5M記憶體耗盡,將返回503)


接下來需要對server不同的位置(location段)進行限速,比如限制每個IP並發串連數為2,則

limit_conn addr 2;

2、限制請求數

要限制請求數,也必須先建立一個限速池,在http段加入如下代碼:

limit_req_zone $binary_remote_addr zone=one:5m;

限速分為全域限速和局部限速,


對於全域限速,我們只需要在後面加上參數即可,比如每秒20個請求,rate=20r/s,即:

limit_req_zone $binary_remote_addr zone=perip:5m rate=20r/s;

有時候我們希望在location段調整一下連結,可以藉助burst參數

limit_req zone=one burst=50;

如果不希望延時,還有nodelay參數

limit_req zone=one burst=50 nodelay;

以上是nginx的限速功能簡介,不當之處,歡迎指正。至於具體使用哪種限速方法,一定要斟酌,以免破壞使用者體驗。



參考文章

http://wiki.nginx.org/HttpCoreModule#limit_rate

http://nginx.org/cn/docs/http/ngx_http_limit_req_module.html

http://nginx.org/cn/docs/http/ngx_http_limit_conn_module.html

http://wiki.nginx.org/HttpLimitConnModule

http://wiki.nginx.org/HttpLimitReqModule

http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_limit_conn_module.html#limit_zone

本文出自 “Purple_Grape的部落格” 部落格,請務必保留此出處http://purplegrape.blog.51cto.com/1330104/1228527


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.