在Nginx下針對IP和目錄限速
本文將向您介紹如何在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.cnreturn 404;
} }</pre>
</div>