429 リクエストが多すぎは良いこと?悪いこと?(助けて)

こんにちは

uptimerobot を使用していますが、1 週間に数回、1〜5 分間 429 エラーが発生します。ログで確認できるのはこれだけです。

根本原因
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 個のみを使用しています。

RAM 8GB、コア数 8

追記: PC で 20〜30 件の投稿を開き続けて 429 エラーが出るまでテストを行い、別のネットワーク環境のスマートフォンでは問題なく動作しました。これにより、429 エラーはすべての訪問者ではなく、特定のクライアントに対してのみ発生するものであることが確認できました。

間違えていなければ、はい、リクエストを連続して送信するクライアント側にのみ影響が出ます。

このエラーは無視すればよいのでしょうか、それとも制限を上げるために何か変更すべきでしょうか?

しきい値を調整したい場合は、次を参照してください:

おそらく、すべてのリクエストが同じIPアドレスから来ているように見えて、多くのユーザーが429エラーに遭遇しているのでしょう。admin/usersに移動して、自分と他のユーザーのIPアドレスを確認してください。もし同じIPアドレスが表示される場合、Discourseに実際のIPアドレスが伝わるように設定を変更する必要があります。

確認してみたら、他のユーザーと同じ内部IPアドレスになっていました! :frowning:

これを修正するにはどうすればいいですか?

Cloudflare 経由でアクセスしていますか?

私もこのゲームで同じように感じています :slight_smile:

はい、でも問題はすべてのユーザーが同じ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アドレスが表示されます :smiley:

Cloudflareを使っているなら、Cloudflareのテンプレートを使うべきです。そのことに関する正規のトピックを見つけるのが不可能なようですね。もしよろしければ、https://ask.discourse.com/ を試してみてください。私自身、どうすればいいかについてのAI生成のメッセージは得られましたが、その議論がどこで見つけられるかはわかりませんでした。AIが解決策を見つけても、検索では見つからないなんて、悲しいですね。 :crying_cat:

うーん…ええと、ChatGPTに聞いて、事前にバックアップを取ってからテストしてみた。今のところ問題ない :smiley:

私は、汎用AIよりも常に https://ask.discourse.com/ を使うことをお勧めします(ただし、実際にコーディング中で、AIがDiscourseのコードにアクセスできる場合は別です)。

これはこの部分のことですか?

  1. Cloudflare の場合、app.yml ファイルに cloudflare.template.yml を追加してください。

これは、上記で見つけた解決策の代替案ですか?

CloudflareをDiscourseで使用している場合は、これを追加する必要があります。@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に上書きされてしまいます。nginxでこのIPを転送しています。