全局速率限制和节流可用设置

Discourse 内置了 3 种不同的全局速率限制,可由站点管理员进行配置。

全局按 IP 的速率限制

这些限制适用于访问 Discourse 应用程序的每个唯一 IP 地址。(直接从文件系统或 CDN 提供的文件除外)

默认情况下,此速率限制是启用的,您可以选择禁用它或将其设置为报告模式。

DISCOURSE_MAX_REQS_PER_IP_MODE:默认值为 block,此速率限制开箱即用。(其他选项包括 warnwarn+blocknone

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE:每个 IP 地址每分钟允许的请求数(默认值为 200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS:每个 IP 地址每 10 秒允许的请求数(默认值为 50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS:每个 IP 地址每 10 秒允许的资产(头像/CSS)请求数(默认值为 200)

DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE:是否对访问 Discourse 的私有 IP 应用速率限制?默认值为 false。

DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL:对于具有此信任级别或更高信任级别的用户,是使用按用户速率限制还是按 IP 速率限制(默认值为 1)

DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS:一个以空格分隔的 IP 地址或 CIDR 块列表,这些地址将被排除在按 IP 速率限制之外。例如:14.15.16.32/27 216.148.1.2

用户 API 速率限制

移动应用程序会为每个设备获取一个用户 API 密钥,以代表用户访问 Discourse(使用开放协议)。这些 API 密钥受到非常严格的限制。

DISCOURSE_MAX_USER_API_REQS_PER_MINUTE:默认值为 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY:默认值为 2880

管理员 API 速率限制

管理员 API 密钥可以通过 yoursite.com/admin/api/keys 页面生成。这些密钥可以代表用户进行操作,但需要管理员权限才能生成。所有密钥共享每分钟 60 次请求的限制。

自托管用户可以在其 app.yml 文件中更改此设置。托管客户需要联系其托管服务提供商。

DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE:60

Data Explorer 插件 API 速率限制

DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE:默认值为 warn,此速率限制开箱即用。(其他选项包括 blockwarn+blocknone

DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS:2

注意:通过 Data Explorer 界面发出的请求不计入速率限制。

如果我触发了速率限制并被节流,该怎么办?

如果您正在以编程方式使用 API,并且收到 429 状态代码的节流响应,您应该尊重该响应并降低请求速度。

作为最终用户,您通常不应该遇到速率限制。如果确实遇到了,请降低操作速度。例如,快速打开 50 个标签页或进行类似操作可能会触发此限制。

防火墙和代理警告! :warning:

如果您运行的是配置错误的反向代理,Discourse 可能会认为所有请求都来自同一个 IP 地址,这极有可能导致您很快触发速率限制。请务必正确配置您的反向代理以转发 IP 地址。

我该如何修改这些限制?

要修改这些限制,请将所需的更改添加到 app.yml 文件的 env 部分中。

:discourse: 如果您由 Discourse 托管,并且订阅了 企业版计划,如需调整这些限制中的任何一项,请联系 team@discourse.org

免费、入门版、专业版或商业版计划 中,全局速率限制是不可调整的。

60 个赞
Troubleshooting a 429 (rate limit)
Is there a limit of API requests?
Rate limits for API users
Any way to turn off RateLimiter temporarily for bulk creation by admin?
Changing/removing API rate limit with category creation
Internal links not oneboxing in private messages
How to improve the forum api call number limit?
Rate limit errors although IP is whitelisted
How-to disable or tune rate limiting by ip address?
How to edit "hidden" site_settings?
API rate limits
Understanding /logs/report_js_error 429
429 error when opening multiple topics
Why semrushbot and ahrefsbot are blocked by default?
Error code 429 when utilising a Zapier integration
Remove the ip limits
User API keys specification
Discourse REST API Documentation
Discourse API Generating 429
How to disable api limits?
Global rate API Limit is not working on live server
How to avoid throttling limits with admin API key?
Set Environmental Variables
Fetch All Posts from a Topic Using the API
Increase rate limit for API?
How do I disable rate limiting from a single IP
Generate User Api Key Without User Approval
Default value for id_10_secs_limit
Semantic Search API
Self-hosting Index
Issues when I enable Component, maybe Right Sidebar Blocks?
Create and configure an API key
Direct URL for the "email me a login link" feature
Direct URL for the "email me a login link" feature
Do not see discourse/config/site_settings.yml to set USER API limits
API rate limits
Very slow discobot certificate generation on our server
Api call returns nothing when too many requests
Uncaught (in promise) error
You Have Performed this Action Too Many Times Error
Import posts through API (time delay)
Discourse-topic-organizer causing "Slow down, too Many Requests from this IP Address"
429 too many requests good or bad ? (please help)
Enable user to Generate API key
Changing/removing API rate limit with category creation
Webhook connect to post comments to WordPress working unreliably