nginx限流限速
2021/8/30 7:07:53
本文主要是介绍nginx限流限速,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
应用场景
下载限速
限制用户下载速度,使用Nginx ngx_http_core_module模块。
请求限制
限制用户一定时间内可以产生的Http请求数,使用Nginx ngx_http_limit_req_module。
连接限制
限制同一时间用户可以产生的连接数及并发数,使用Nginx ngx_http_limit_conn_module。
场景实践
eg1 基于来源IP对下载速率限制,限制每秒处理1次请求,但可以将5个请求放入缓存区。
#基于$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; } }
eg2 设置共享内存区域和给定键值的最大允许连接数,超过限制返回503。
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; } }
eg3 限制下载速度。
server { listen 80; server_name mirror.atlas.com; #限制100M后下载速度降到100K。 limit_rate_after 100m; limit_rate 100k; location / { root /code; index index.html; } }
eg4 限制web服务器请求处理速度为1秒1个,触发值为5、限制用户仅可同时下载一个文件。当下载超过100M时限制下载速度为500K。如果同时下载超过2个视频,则返回提示“请充值”。
#在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; } }
这篇关于nginx限流限速的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-29fail2ban nginx
- 2024-03-18install nginx proxy manager
- 2024-01-2444从零开始用Rust编写nginx,命令行参数的设计与解析及说明
- 2024-01-22比Nginx更好用的Gateway!
- 2024-01-17nginx daemon off
- 2023-12-30Nginx Vhost Traffic Status 是什么意思-icode9专业技术文章分享
- 2023-12-26使用nginx搭建creates.io镜像(稀疏索引)
- 2023-11-18centos7编译安装Nginx教程。
- 2023-11-02nginx启动命令和停止命令
- 2023-10-25Centos7系统Nginx负载均衡如何安装和配置?