nginx令牌限制併發

2022-05-07 13:54:09 字數 1379 閱讀 5564

解釋:rate=100r/s  意思是每個位址每秒只能請求100次。

burst=10     表示 一共有10塊令牌,並且每秒鐘只新增1塊令牌。

nginx利用limit模組設定ip併發防cc攻擊

在nginx.conf 中的http欄位下面加入一如下一行

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ##平均 1r/s 每秒1個請求

再在server下配置的主機定義文件中加入如下一行(全域性就加在server下面)

limit_req zone=one burst=8;佇列模式

limit_req zone=one burst=8 nodelay; ###不用佇列 預設的突發(burst是0)

如果只想限制php的請求,加在location下

location ~ \.php$ {

try_files $uri =404;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

limit_req zone=one burst=8 nodelay;

重載入nginx即可 nginx -s reload

參考文件1:

參考文件2:

比如nginx.conf的http段配置如下

limit_req_zone $binary_remote_addr zone=req:20m rate=100r/s;

limit_req zone=req burst=150;

複製**

「limit_req_zone $binary_remote_addr zone=req:20m rate=100r/s;」

相當於在nginx建立了乙個檢查站,名字叫req,凡是跟req相關的請求,並限定檢查速率是100r/s。

所以當使用「limit_req zone=req

burst=150;」指定某些請求需要經過req的時候,請求的速率就被限制為100r/s。日誌驗證了這點。

然後就是burst=150了。這相當於在檢查站req旁邊放150個座位。如果某個請求當時超過速度限制被攔了,請他在空座位上坐著,等排隊,如果檢查站空了,就可以通過。如果連座位都坐滿了,那就抱歉了,請求直接退回,客戶端得到乙個伺服器忙的響應。所以說burst跟request_rate一點關係都沒有,設成10000,就是1萬個請求可以等著排隊,而檢查站還是1秒鐘放行100個請求(龜速)。而且也不能一直排隊,所以nginx還設了超時,排隊超過一定時間,也是直接退回,返回伺服器忙的響應。

Nginx限制訪問次數和併發數

nginx限制訪問速率和最大併發連線數模組 limit 防止ddos攻擊 zone one或allips 表示設定名為 one 或 allips 的儲存區,大小為10兆位元組 rate 2r s 允許1秒鐘不超過2個請求 limit conn log level error limit conn s...

nginx的頻寬限制和併發控制

我們經常會遇到這種情況,伺服器流量異常,負載過大等等。對於大流量惡意的攻擊訪問,會帶來頻寬的浪費,伺服器壓力,影響業務,往往考慮對同乙個ip的連線數,併發數進行限制。1.修改配置檔案 root server1 conf vim nginx.conf 33 gzip on 34 limit conn ...

nginx限制併發連線請求數的方法

簡介 限制併發連線數的模組為 http limit conn module,位址 限制併發請求數的模組為 http limit req module,位址 這兩個模組都是預設編譯進nginx中的。限制併發連線數 示例配置 limit conn zone key zone name size 定義併發...