nginx限制鏈接數(ngx_http_limit_conn_module)模塊

nginx限制鏈接數(ngx_http_limit_conn_module)模塊

2016年04月06日 17:05:35 亦非我所願丶 閱讀數:5318 標籤: nginxmodule 更多前端

我的分類: nginxnginx

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 https://blog.csdn.net/wanglei_storage/article/details/51076561後端

ngx_http_limit_conn_module 對於一些服務器流量異常、負載過大,甚至是大流量的惡意攻擊訪問等,進行併發數的限制;該模塊能夠根據定義的鍵來限制每一個鍵值的鏈接數,只有那些正在被處理的請求(這些請求的頭信息已被徹底讀入)所在的鏈接纔會被計數。服務器

該模塊提供了兩個配置參數,limit_conn_zone 和 limit_conn ,其中 limit_conn_zone 只能配置在 http{} 段,而 limit_conn 則能夠配置於http{},server{},location{} 區段中。併發


第三方模塊編譯安裝參數:

這裏寫圖片描述


1、 limit_conn_zone

語法:limit_conn_zone $variable zone=name:size; 
配置段:httpspa

該指令描述會話狀態存儲區域。鍵的狀態中保存了當前鏈接數,鍵的值能夠是特定變量的任何非空值(空值不會被考慮)。$variable 定義鍵,zone=name 定義區域名稱,主要做用與後面的 limit_conn。size 定義各個鍵共享內存空間大小,如:.net

這裏寫圖片描述

註釋:server

客戶端的IP地址做爲鍵。注意,這裏使用的是 binary_remote_addr 變量,而不是 remote_addr 變量。 
remote_addr變量的長度爲7字節到15字節,而存儲狀態在32位平臺中佔用32字節或64字節,在64位平臺中佔用64字節。 
binary_remote_addr變量的長度是固定的4字節,存儲狀態在32位平臺中佔用32字節或64字節,在64位平臺中佔用64字節。 
1M共享空間能夠保存3.2萬個32位的狀態,1.6萬個64位的狀態。 
若是共享內存空間被耗盡,服務器將會對後續全部的請求返回 503 (Service Temporarily Unavailable) 錯誤。blog


2、limit_conn

語法:limit_conn zone_name number 
配置段:http,server,location圖片

該指令指定每一個給定鍵值的最大同時鏈接數,當超過這個數字時返回503(Service )錯誤。如(同一IP同一時間只容許有20個鏈接):

這裏寫圖片描述


3、配置使用示例

limit_conn_zone $binary_remote_addr zone=showjoy_conn:20m; 
主要用來定義變量、zone名稱、共享內存大小

limit_conn showjoy_conn 20; 
將前面定義的showjoy_conn進行配置,而且限制同一IP併發鏈接數爲20

這裏寫圖片描述


4、使用注意事項

事務都具備兩面性的。ngx_http_limit_conn_module 模塊雖然說能夠解決當前面臨的併發問題,可是會引入另一些問題的。如前端若是有作LVS或反代,而咱們後端啓用了該模塊功能,那不是很是多503錯誤了?這樣的話,能夠在前端啓用該模塊,要麼就是設置白名單。

模塊地址:https://yunpan.cn/cqSKP6BrJ2AeT 訪問密碼 4f50

相關文章
相關標籤/搜索