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

Discourse 附带 3 种不同的全局速率限制,可由站点管理员配置。

全局每 IP 速率限制

这些限制适用于访问 Discourse 应用程序的每个唯一 IP 地址。(直接从文件系统或内容分发网络 (CDN) 服务的文件的限制不包括在内)

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

DISCOURSE_MAX_REQS_PER_IP_MODE:默认值为 block(阻止),此速率限制开箱即用。 (其他选项是 warn(警告)、warn+block(警告+阻止)和 none(无))

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE:每分钟每个 IP 的请求数(默认为 200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS:每 10 秒每个 IP 的请求数(默认为 50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS:每 10 秒每个 IP 的资源(头像/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

数据资源管理器 插件 API 速率限制

DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE:默认为 warn(警告),此速率限制开箱即用。(其他选项是 block(阻止)、warn+block(警告+阻止)和 none(无))

DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS:2

注意:通过数据资源管理器用户界面发出的请求不计入速率限制。

如果我遇到速率限制并被限速,该怎么办?

如果您以编程方式使用 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?
Discourse-topic-organizer causing "Slow down, too Many Requests from this IP Address"
How-to disable or tune rate limiting by ip address?
How to edit "hidden" site_settings?
Rate limit errors although IP is whitelisted
API rate limits
User API keys specification
Why semrushbot and ahrefsbot are blocked by default?
429 error when opening multiple topics
Remove the ip limits
Error code 429 when utilising a Zapier integration
Understanding /logs/report_js_error 429
Direct URL for the "email me a login link" feature
Do not see discourse/config/site_settings.yml to set USER API limits
Uncaught (in promise) error
Webhook connect to post comments to WordPress working unreliably
Changing/removing API rate limit with category creation
Enable user to Generate API key
Import posts through API (time delay)
You Have Performed this Action Too Many Times Error
Api call returns nothing when too many requests
Very slow discobot certificate generation on our server
API rate limits
Create and configure an API key
Fetch All Posts from a Topic Using the API
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
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?
Direct URL for the "email me a login link" feature