nginx的頻寬限制和併發控制

2021-10-09 05:52:38 字數 1943 閱讀 9425

我們經常會遇到這種情況,伺服器流量異常,負載過大等等。對於大流量惡意的攻擊訪問,會帶來頻寬的浪費,伺服器壓力,影響業務,往往考慮對同乙個ip的連線數,併發數進行限制。

1.修改配置檔案

[root@server1 conf]# vim nginx.conf

33 #gzip on;

34 limit_conn_zone $binary_remote_addr zone=addr:10m;

35 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #注意:必須寫在server上面

36 server

其中:

limit_conn_zone $binary_remote_addr zone=addr:10m;表示大小是10m記憶體 10m的記憶體來對ip傳輸開銷

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;1s不超過乙個請求

limit_conn_zone用來限制同一時間連線數,即併發限制

limit_req_zone用來限制單位時間的請求數,即速率限制,採用漏桶演算法

$binary_remote_addr是限制同一客戶端ip位址

zone=addr:10m表示生成乙個大小為10m,名字為one的記憶體區域,用來儲存訪問的頻次資訊

[root@server1 conf]# nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@server1 conf]# nginx -s reload

2.測試

新建download目錄後放入測試檔案:

[root@server1 conf]# mkdir /usr/local/nginx/html/download

[root@server1 conf]# cd /usr/local/nginx/html/download

[root@server1 download]# ls

1.jpg

清空日誌檔案:

[root@server1 download]# cd /usr/local/nginx/logs

[root@server1 logs]# >access.log

[root@server1 logs]# cat access.log

併發測試,在客戶端:

[root@fserver2 ~]# ab -c 10 -n 1000
測試後檢視日誌可以發現好多503錯誤,即伺服器對併發進行了限制

頻寬限制的測試即只有配置檔案不相同:

[root@server1 conf]# vim nginx.conf

33 #gzip on;

34 limit_conn_zone $binary_remote_addr zone=addr:10m;

35 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #注意:必須寫在server上面

36 server

最後進行客戶端測試時發現速度明顯變慢,即伺服器對速度進行了限制

FTP併發及頻寬限制

3.ftp併發及頻寬限制 問題沿用練習一,通過調整ftp服務端配置,實現以下目標 最多允許100個ftp併發連線 每個ip位址最多允許2個併發連線 匿名訪問時,將速度限制為 50kb s 使用者登入訪問時,將速度限制為 500kb s 在客戶機上通過ftp或wget驗證上述限制 方案關於vsftpd...

Nginx簡單的防盜煉和頻寬限制

或者在apache下使用rewriteengine on,然後使用rewritecond 來定義,這些都是防止比較低階的盜鏈,如果是面對迅雷或者其他的話,這個遠遠不夠,但是不是這裡討論的範圍。對於nginx而言,本身也有簡單的防盜煉模組ngx http referer module,配置比較簡單,定...

Nginx限制訪問次數和併發數

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