微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

configurationNGINX以响应一定比例的传入请求

我想限制传入的请求到一个Nginx路由。

当前的configuration与此类似:

upstream up0 { server xxxx:1111; keepalive 1024; } server { location /auc { limit_req zone=one burst=2100; proxy_pass http://up0/auc; proxy_http_version 1.1; proxy_set_header Connection ""; } }

我想控制在上游服务器上看到的请求数量。 对于所有其他请求,我希望Nginx响应204响应。

通过传入请求的百分比进行控制也是可行的。

AFNetworking 2.2使用自签名证书的SSL固定

两个文档根与Nginx和fastcgi

Nginx作为Nexus的反向代理服务器 – 无法在Docker环境中连接

Nginx作为非root用户安装Passenger

Docker分离进程和源代码控制

谢谢。

Nginx中$ 0是什么? (mod_rewrite的)

在写入访问日志时,Nginx禁用或解码url编码

EC2网站架构devise

我怎样才能创build一个file_put_contents具有组写入权限的文件

如何在Nginx上部署Spring Web应用程序?

Nginx使用limit_req_zone和limit_req来限制请求非常有效。

首先创建一个已经定义了限制的区域。 对于全局限制,区域的关键字可以是静态的,也可以使用源IP地址等变量作为区域的关键字,这对于通过特定的ip进行限制是有用的,或者只是对站点上较慢的页面进行限制。 速率可以按每秒或每分钟的请求来定义。

limit_req_zone key zone=name:size rate=rate;

接下来,创建一个将该区域应用于传入请求的规则。 可以首先使用location指令将规则仅应用于特定的请求,或者可以是服务器范围的。 突发选项将排队指定数量的请求超过速率限制,并有助于节流短突发流量,而不是返回错误

limit_req zone=name [burst=number] [nodelay];

超过速率限制的流量的认响应代码为503(服务不可用)。 可以设置204(不含内容)的备用代码

limit_req_status code;

把所有这一切放在一起有效的配置,将位置块中的所有请求限制为每秒10个缓冲区,以便在返回错误之前排队多达50个请求,并返回指定的204响应,如下所示:

http { .... limit_req_zone $hostname zone=limit:20m rate=10r/s; limit_req_status 204; server { ... location / { ... limit_req zone=limit burst=50; } } }

在实践中,服务器块可能会在http块中包含的不同文件中。 为了清晰起见,我只是浓缩了它们。

要测试,请使用泛滥工具或设置请求率= 10r / m(每分钟10次)并使用浏览器。 检查日志并监视被拒绝请求的数量非常有用,以便您了解对用户的任何影响。

可以组合多个limit_req_zone规则来指定松散的全局限制,然后更严格的每个源IP限制。 这将能够在更广泛的用户群之前锁定最持久的少数用户

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐