限制用户下载速度,使用Nginx ngx_http_core_module模块。
限制用户一定时间内可以产生的Http请求数,使用Nginx ngx_http_limit_req_module。
限制同一时间用户可以产生的连接数及并发数,使用Nginx ngx_http_limit_conn_module。
#基于$binary_remote_addr参数做限制,在内存中开辟一个名为req_one大小为10M的空间来存放每个IP对应的访问频次信息,限制速率为每秒1个请求。 http { limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s; } server { listen 80; server_name mirror.atlas.com; #请求超过1r/s剩下的放入缓存延迟处理,超过burst值后返回503。 limit_req zone=req_one burst=3 nodelay; location / { root /code; index index.html; } }
http { limit_conn_zone $binary_remote_addr zone=conn_mg:10m; } server { listen 80; server_name mirror.atlas.com; #最多允许两个连接。 limit_conn conn_mg 2; location / { root /code; index index.html; } }
server { listen 80; server_name mirror.atlas.com; #限制100M后下载速度降到100K。 limit_rate_after 100m; limit_rate 100k; location / { root /code; index index.html; } }
#在http块中定义请求zone和连接zone的内存区域名称和大小。 http { limit_req_zone $binary_remote_addr zone=req_mg:10m rate=1r/s; limit_conn_zone $binary_remote_addr zone=conn_mg:10m; } server { listen 80; server_name mirror.oldxu.com; root /code; charset utf8; autoindex on; autoindex_exact_size off; autoindex_localtime on; #限制请求处理速度1秒1个,最多缓存5个请求。 limit_req zone=req_mg burst=5 nodelay; #限制最多1个连接,下载超过100M后限速到500K,超过连接限制返回503时定向到errpage返回请充值。 limit_conn conn_mg 1; limit_rate_after 100m; limit_rate 500k; error_page 503 @errpage; location @errpage { default_type text/html; return 200 '请充值'; } location / { index index.html; } }