在Nginx下針對IP和目錄限速

jopen 9年前發布 | 10K 次閱讀 Nginx Web服務器

    本文將向您介紹如何在Nginx下對IP和目錄進行限速,在某種應用場景下,這也是個常見需求。

Nginx可以通過HTTPLimitZoneModule和HTTPCoreModule兩個目錄來限速。

示例:

limit_zone one $binary_remote_addr 10m;  
 
location / {   
        limit_conn one 1;   
        limit_rate 100k;   
}


說明:

limit_zone,是針對每個IP定義一個存儲session狀態的容器。這個示例中定義了一個10m的容器,按照32bytes/session,可以處理320000個session。

然后針對目錄進行設定。

limit_conn one 1;


是限制每個IP只能發起一個連接。

limit_rate 100k;


是對每個連接限速100k. 注意,這里是對連接限速,而不是對IP限速。如果一個IP允許兩個并發連接,那么這個IP就是限速limit_rate x 2。

 

Nginx 監控

上述配置中,首先我們定義了一個 location ~ ^/NginxStatus/,

這樣通過 http://localhost/NginxStatus/ 就可以監控到 Nginx 的運行信息,顯示的內容如下:

Active connections: 70 
server accepts handled requests
 14553819 14553819 19239266 
Reading: 0 Writing: 3 Waiting: 67

NginxStatus 顯示的內容意思如下:

active connections – 當前 Nginx 正處理的活動連接數。

server accepts handled requests -- 總共處理了 14553819 個連接 , 成功創建 14553819 次握手 ( 證明中間沒有失敗的 ), 總共處理了 19239266 個請求 ( 平均每次握手處理了 1.3 個數據請求 )。

reading -- nginx 讀取到客戶端的 Header 信息數。

writing -- nginx 返回給客戶端的 Header 信息數。

waiting -- 開啟 keep-alive 的情況下,這個值等于 active - (reading + writing),意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留連接。


nginx防盜鏈

location ~ .(gif|jpg|png|swf|flv)$ {
root html
valid_referers none blocked .nginxcn.com;
if ($invalid_referer) {
rewrite ^/ www.nginx.cn

return 404;

} }</pre>

</div>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!