1、在nginx.conf里的http{}里加上如下代碼:
#ip limit
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
2、在需要限制并發數和下載帶寬的網站配置server{}里加上如下代碼:
limit_conn perip 2;
limit_conn perserver 20;
limit_rate 100k;
補充說明下參數:
$binary_remote_addr是限制同一客戶端ip地址;
$server_name是限制同一server最大并發數;
limit_conn為限制并發連接數;
limit_rate為限制下載速度;
轉另一篇文章:http://hxl2009.blog.51cto.com/779549/1324473
注意:
nginx 1.1.8 之后的版本的語法改為limit_conn_zone $binary_remote_addr zone=NAME:10m;
NAME 就是 zone 的名字詳情請看這里 http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
限制連接數:
要限制連接,必須先有一個容器對連接進行計數,在http段加入如下代碼:
"zone=" 給它一個名字,可以隨便叫,這個名字要跟下面的 limit_conn 一致
$binary_remote_addr = 用二進制來儲存客戶端的地址,1m 可以儲存 32000 個并發會話
接下來需要對server不同的位置(location段)進行限速,比如限制每個IP并發連接數為1,則:
server
{
listen 80;
server_name 192.168.11.128;
index index.html index.htm index.php;
limit_conn addr 1; #是限制每個IP只能發起1個連接 (addr 要跟 limit_conn_zone 的變量對應)
limit_rate 100k; #限速為 100KB/秒
root html;
新聞熱點
疑難解答