リバースプロキシでの問題エラー429

こんにちは、私の Discourse はリバースプロキシ(NPM)で動作しています。

Discourse は X-Forwarded 関連のヘッダーに対応していないため、ユーザーの登録元 IP などを確認する際に、常にリバースプロキシの IP アドレスが表示されてしまいます。

Discourse 上でリクエストをスニッフすると X-Forwarded ヘッダーは存在しているようですが、access.log では IP 表示がリバースプロキシのものになっています。

インターネット上の情報によると、Discourse 側の nginx 設定テンプレートまたは設定ファイルを変更する必要があるようです(NPM 上の nginx ではなく)。

これについてお手伝いいただけますでしょうか?Discourse が web.ratelimit テンプレートを有効にしており、429 エラーが頻発しているためです。

:confused:
ご支援よろしくお願いいたします。

内部 nginx をリバースプロキシ IP として設定する方法の例については、Set up Discourse on a server with existing Apache sites を参照してください。

「いいね!」 1

私もこれで苦労しています。

DebianサーバーにApache 2.4 vHostsがあり、そのうちの1つがDiscourse Dockerコンテナです。Apacheではmod_remoteipが有効になっています(mod_extract_forwardedはありませんでしたが)、設定オプションはありません。vHostの設定は非常にシンプルです。

RequestHeader set X-Forwarded-Proto "https"
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /.well-known !
ProxyPass / http://localhost:8083/
ProxyPassReverse / http://localhost:8083/

8083はDiscourse Dockerコンテナの公開されたhttpポートです。

ほぼそれだけです。

Apacheのaccess.logで作成された統計情報でさまざまな訪問者(IP別)を確認でき、さらに重要なことに、ユーザーの最後のIPも確認できます(これは私にとって簡単なチェックでした)。したがって、訪問者のIPアドレスがApacheプロキシを介してDiscourseに公開されているようです。これは、数日前に有効にしたmod_remoteipをオンにする前からすでにそうなっていました。

いずれにせよ、また問題が発生しています。ポーランドのクラクフからのIPv4からのクローラーまたはDoS攻撃がサーバーで実行されています。大量の429エラーが発生しています。それは私にとって問題ありませんが、他のすべての訪問者もこれらのエラーを受け取っています。

これも同様ですか?接続制限に達すると、全員がエラーを受け取るのですか?それともIPごとですか?

私の設定に何か不足しているか、改善/調整できますか?数週間前と数日前にもClaudebotで問題が発生していたので、制限を少し引き上げる必要があるかもしれません。

よろしくお願いします。
Roi

リモートIPアドレスがDiscourseに到達するかどうかを確認するものを追加しましたか、それともすべてのユーザーがプロキシから来ているように見えますか?

x-forwarded-forを検索してください

すみません :see_no_evil: Nginx (Discourse) の部分を忘れていました :see_no_evil: ありがとうございます! :slight_smile:

app.yml を編集して、コンテナの再構築を実行しました。コンテナが再起動するとすぐにボットが戻ってきました。まだ 429 エラーは表示されていません。通常のユーザーにとっては、このままの状態が続くことを願っています。

それが問題なのです… ユーザーの管理ページを確認すると、常に異なる「最終IP」エントリが表示されていました。そのため、mod_remoteip も Nginx の設定変更もなしに、Discourse はユーザーの実際の IP を認識していました。 :man_shrugging:

いずれにしても、Nginx の設定変更がこの問題の解決策をもたらしたかどうかを確認するのが楽しみです! :slight_smile:

「いいね!」 1