aLinux
(aLinux )
1
你好
我正在使用 UptimeRobot,每周会有几次出现 429 错误,持续 1 到 5 分钟,但日志里只能看到这些。
根本原因
HTTP 429 - 请求过多 (Too Many Requests)
事件开始时间
2026-08-23 10:42:58
解决时间
2026-08-23 10:48:05
持续时间
5 分钟 7 秒
我是自托管的,Discourse 通过 HestiaCP 的反向代理进行配置。
log.txt (55.8 KB) 这是日志
我想知道这个 429 错误是针对所有用户,还是只针对少数几个用户?
我使用的是 Docker 标准安装,只开放了 80 端口,并设置了 4 个 worker。
8 GB 内存和 8 核 CPU
更新:我在我的电脑上做了测试,打开 20/30 个帖子直到收到 429 错误,而在我使用不同网络的手机上则运行正常。这是否证实了 429 错误只影响单个客户端,而不是所有访客?
如果我没记错的话,是的,它只影响发送大量请求的客户端。
aLinux
(aLinux )
3
我应该忽略这个问题,还是应该修改某些设置来提高限制?
pfaffman
(Jay Pfaffman)
5
这可能意味着所有请求看起来都来自同一个 IP 地址,导致许多用户收到 429 错误。请前往 admin/users 页面,查看您自己和其他用户的 IP 地址。如果它们相同,您需要配置系统,以便 Discourse 能够获取真实的 IP 地址。
aLinux
(aLinux )
6
我刚查了一下,我的内网 IP 地址和其他用户的一样!
我该怎么解决这个问题?
aLinux
(aLinux )
8
是的,但问题在于所有用户都使用同一个 IP……
我已经把这段配置加到 app.yml 里,现在正在测试:
run:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: “server {”
to: |
server {
set_real_ip_from 192.168.1.250;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
- exec: echo “Beginning of custom commands”
- exec: echo “End of custom commands”
刚才在桌面端和手机上都测试过了
现在能获取到正确的 IP 地址了 
pfaffman
(Jay Pfaffman)
9
如果你在使用 Cloudflare,那么你需要的是 Cloudflare 模板。似乎很难找到关于此主题的官方帖子,所以也许可以试试 https://ask.discourse.com/ —— 我确实通过 AI 生成了一条关于该怎么做 的回复,但找不到讨论该问题的具体位置。AI 能找到解决方案,而搜索却不行,这让我很沮丧。
aLinux
(aLinux )
10
嗯……是的,我问了ChatGPT,之前做了备份,然后进行了测试。目前一切顺利 
pfaffman
(Jay Pfaffman)
11
我会始终使用 https://ask.discourse.com/,而不是通用的 AI(除非你正在积极编码,并且 AI 可以访问 Discourse 的代码)。
如果你在使用 Discourse 时搭配了 Cloudflare,就应该添加它。我想那应该就是 @pfaffman 提到的那个模板吧?
我认为这取决于你的具体配置。
我的配置如下:
┌─────────────────────────┐
│ Cloudflare │
│ WAF / CDN / DDoS / SSL │
└────────────┬────────────┘
│
真实客户端 IP
│
▼
┌─────────────────────────┐
│ CentminMod Nginx │
│ │
│ cloudflare.conf │
│ 恢复真实 IP │
└────────────┬────────────┘
│
X-Forwarded-For
= 真实客户端 IP
│
▼
┌─────────────────────────┐
│ Discourse Docker │
│ │
│ 可信代理 (trusted proxy) │
│ 172.16.0.0/12 │
└─────────────────────────┘
如果我使用该模板,IP 地址会回退为 Docker 内部 IP,而不是对外暴露的真实 IP。我已经在 Nginx 中进行了转发设置。