如何限制NGINX服务器中的连接数(请求数)
【文章声明】文章源于互联网收集整理,不代表YINGSOO观点!若有咨询“如何限制NGINX服务器中的连接数(请求数)”等有关服务器、云主机租用、托管、配置、价格问题,请免费咨询YINGSOO客服,获取专业解答!
【热门主机】韩国高防服务器 | 澳大利亚云服务器 | 韩国CN2服务器
【文章推荐】香港云服务器主机商推荐,这家性价比很高!
我们在使用香港服务器的Linux系统中,我们常常使用NGINX部署网站,它附带了各种模块,允许用户控制其网站、Web 应用程序以及其他 Web 资源的流量。限制流量或访问的关键原因之一是防止某些类型的滥用或攻击,例如DDoS(拒绝服务)攻击。
通常在NGINX中有三种主要的限制使用或流量的方法:
①限制连接(请求)的数量。
②限制请求的速率。
③限制带宽。
上面的NGINX流量管理方法可以根据用例配置为基于定义的密钥进行限制,最常见的是客户端的 IP 地址。NGINX 还支持其他变量,例如会话 cookie 等等。
我们今天将讨论如何限制NGINX中的连接数以保护您的网站/应用程序。
请记住,只有当服务器正在处理请求并且整个请求标头已被读取时, NGINX才会考虑限制连接。因此,并非所有客户端连接都被计算在内。
一、限制 NGINX 中的连接数
首先,您需要使用limit_conn_zone指令定义一个共享内存区域,用于存储各种键的连接指标。如前所述,密钥可以是文本、变量(例如客户端的远程 IP 地址)或两者的组合。
这个在 HTTP 上下文中有效的指令有两个参数:key 和zone(格式为 zone_name:size)。
limit_conn_zone $binary_remote_addr zone=limitconnbyaddr:20m;
要设置返回给被拒绝请求的响应状态代码,请使用将HTTP 状态代码作为参数的limit_conn_status指令。它在 HTTP、服务器和位置上下文中有效。
limit_conn_status 429;
要限制连接,请使用limint_conn指令设置要使用的内存区域和允许的最大连接数,如以下配置片段所示。该指令在 HTTP、服务器和位置上下文中有效。
limit_conn limitconnbyaddr 50;
这是完整的配置:
保存文件并关闭它。
然后通过运行以下命令检查NGINX配置是否正常:
$ sudo nginx -t
接下来,重新加载NGINX服务以影响最近的更改:
$ sudo systemctl reload nginx
二、检查 Nginx 连接限制
当客户端超过允许的最大连接数时,NGINX会向客户端返回“ 429 Too many requests ”错误
三、限制 Nginx 与应用程序的连接数
您还可以通过使用$server_name变量来限制给定服务器的连接数:
此配置使NGINX能够将与为应用程序testapp.a5idc.cnet提供支持的虚拟服务器的连接总数限制为2000个连接。
注意:基于客户端 IP 限制连接有一个缺点。您最终可能会限制不止一个用户的连接,特别是如果访问您的应用程序的许多用户都在同一个网络上并且在NAT后面运行——他们的所有连接都来自同一个 IP 地址。
在这种情况下,您可以使用 NGINX 中可用的一个或多个变量,这些变量可以在应用程序级别识别客户端,例如会话 cookie。
菲律宾有云服务器免备案,控制面板自主管理,5分钟交付,BN高品质数据中心,安全稳定,3天免费测试
https://www.yingsoo.com/products/cloud-ph.html
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。