我們經常會遇到這種情況,伺服器流量異常,負載過大等等。對於大流量惡意的攻擊訪問,會帶來頻寬的浪費,伺服器壓力,影響業務,往往考慮對同乙個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...