Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了nginx limit_req限制的问题 – 文档说明?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我在用乘客/铁路在Nginx上进行速率限制方面没有任何麻烦。

部分困惑在于根据每个客户端的configuration工作的哪些方面与哪些是全局性的限制区分。

我遇到的问题让我对Nginx的limit_req和limit_req_zoneconfiguration的理想设置感到头痛。 这似乎隐约触发翻译语言之间的暗示,这是要么用户特定的或适用于全球。

在文档中, limit_req_zone行的工作方式非常模糊。 这个“区域”是全球性还是每个用户? 鉴于以下线我是正确的以下结论:

Passenger + Nginx:在一个子目录中托pipe一个Rails应用程序

Rails 3.1,Nginx,乘客目录索引被禁止

sqlite3:CantOpenException(可以打开数据库文件

Nginx +乘客+铁路 – 403禁止错误

Rails:我想要Server Sent Events。 我必须放弃Phusion Passenger吗?

limit_req_zone $binary_remote_addr zone=update_requests:1R_935_11845@ rate=20r/s;

$ binary_remote_addr代表用户的IP地址

这种表示尤其是可取的,因为它比$ remote_addr占用更less的空间? 为什么这个重要或者更好?

“区域”(在这种情况下)填满了他们的IP地址的表示…?

'rate'是请求被允许离开队列的速度?

这个“速度”和“区域” – 是客户特定还是全球?

我也不确定limit_req行,例如:

limit_req zone=main_site burst=10 nodelay;

不完全确定是什么意思。 这里的文档也很模糊。 我想这是一些要求。 为什么要求的数量其余的请求系统使用这个奇怪的“区域”系统?

'爆'的要求是每….什么时间?

据我所知,'nodelay'意味着如果队列中有其他请求,则立即提供503错误,而不是等待队列完成。 a)等待多久? b)这是否意味着在这种情况下“突发”设置被忽略?

谢谢。

一些背景信息,如果有人真的无聊,想看看我们正在尝试解决的configuration和一般问题:

目前我有这个(摘录):

limit_req_zone $binary_remote_addr zone=main_site:10m rate=40r/s; limit_req_zone $binary_remote_addr zone=update_requests:1R_935_11845@ rate=20r/s; server { listen 80; server_name [removed]; root [removed]; include rtmp_proxy_setTings; try_files $uri /system/maintenance.html @passenger; LOCATIOn @passenger { passenger_max_request_queue_size 0; # 256; limit_rate_after 2048k; limit_rate 512k; limit_req zone=main_site burst=10 nodelay; limit_conn addr 5; passenger_enabled on; passenger_min_instances 3; } LOCATIOn ~ ^/update_request { passenger_enabled on; limit_req zone=update_requests burst=5 nodelay; } gzip on; gzip_min_length 1000; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain application/xml application/javascript text/javascript text/css; gzip_disable "msie6"; gzip_http_version 1.1; }

我们有两个区域定义:

a)“main_site”,用于捕捉所有的东西b)“update_request”,客户端上的JS通过AJAX轮询这个更新的内容,当一个小的(caching的)文件中的时间戳发生改变

就其性质而言,这往往意味着我们有1或2分钟的stream量相当低,但是当潜在的10,000个客户端同时访问这个更新的内容时(这个数据库以稍微不同的方式依赖于filter,访问权限等)

我们发现,在负载较重的时候,当cpu核心被刷新时,网站被磨碎了 – 我们的更新代码中有一些错误,这就意味着当连接断开时,查询排队等候,服务器,直到我们不得不暂时停下来,强制用户注销并刷新他们的浏览器……我们有效地自己动手:PI认为这最初是由于我们托pipe公司一方的一些连接问题导致的一堆请求在用户的浏览器中排队

然我们解决了这些错误,但是我们警告客户可能会收到奇怪的503“重负载”消息,或者看到内容没有及时更新。 速率限制的最初意图是确保网站的日常页面可以在重载时继续浏览,同时限制更新的内容

不过,现在我们所看到的主要问题是,即使更新代码中的错误已经(希望)被消除,我们仍然无法在限制速度方面取得很好的平衡。 我们设置的每件事情似乎都会在访问日志中产生不健康的503错误,无论何时将新的内容添加到网站中(并且一次由我们的用户拉动)

在caching方面,我们正在寻找各种解决scheR_935_11845@e,但理想情况下,我们仍然希望受到某种速率限制的保护,而这种限制在日常操作中不会影响用户

configurationNginx在乘客3.0.2独立

使用Nginx和Phusion Passenger自动部署rails Gitlab项目到子域

在搭载乘客的Apache上设置rails应用程序 – Rails似乎没有加载

Apache上的Phusion Passenger上有多个rails应用程序

Centos + Apache +乘客+导轨:从您的www文件夹运行rails应用程序

你正在阅读哪些文档? http://Nginx.org/en/docs/http/ngx_http_limit_req_module.html对于指令的用法和语法非常清楚。

关于limit_req_zone :

是。

你的例子中,你正在分配1MB的空间来存储“当前数量过多的请求”列表。 每个项目/键使用的空间越少,您可以存储的空间就越多。 “如果区域存储耗尽,服务器将返回503(服务暂时不可用)错误到所有进一步的请求。

您需要跟踪哪些客户应受限速。

费率是客户在特定时间内可以提出的最大请求数。

limit_req_zone的上下文仅限于http,因此是全局的。

关于limit_req :

一旦客户达到费率限制,客户可以继续提出要求; 但是,服务器将延迟处理(试图减慢客户端)。 如果客户端继续发送高于速率限制的请求,并发送至少burst数量的请求,则服务器将简单地放弃所有请求(而不是放慢速度)。 有人可能会使用这个来防止DoS攻击或API滥用。

突发请求不是时间依赖的。 如果客户超过费率限制,爆发只会进行。

nodelay消除了burst值处理请求的延迟。 如果您不想处理任何限速客户端,请将burst设置为0并使用Nodelay 。 速率限制客户端的等待/延迟取决于limit_req_zone指定的速率限制。

大佬总结

以上是大佬教程为你收集整理的nginx limit_req限制的问题 – 文档说明?全部内容,希望文章能够帮你解决nginx limit_req限制的问题 – 文档说明?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: