すべてのトラフィックがユーザーのブラウザ IP ではなく Cloudflare サーバーから来ているように表示される問題を解決する方法

1panel コンテナで Discourse をデプロイし、リバースプロキシを設定して Web サイトを構築しました。ドメインに Cloudflare CDN を使用したところ、すべてのトラフィックがユーザーのブラウザ IP ではなく、Cloudflare のサーバーから来ているように表示される問題の解決方法を教えてください。

アプリの app.yml で Cloudflare テンプレート を使用したいですね。

試してみましたが、ダメでした :rofl: 。失敗の原因は、1panel コンテナでデプロイし、リバースプロキシを使用していることかもしれませんね?

nginx 設定ファイルを直接編集することはできますか?可能であれば、こちら で提案されている変更を加えてください。その後、nginx サービスを再起動すれば正常に動作するはずです。参考になれば幸いです!

ホスティング会社とCloudFlareの2つのリバースプロキシを実行する理由が気になります。技術的な理由があるのでしょうか?

私はサーバー管理パネルの 1Panel(オープンソース)を使用して、Discourse をコンテナ化してデプロイしています。これによりサーバー管理が容易になります。

1Panel のアーキテクチャは以下の通りです:ユーザー -> Cloudflare -> 1Panel Nginx -> Discourse コンテナ

私の理解では、Discourse の app.yml 設定を変更しても、1Panel の Nginx は Cloudflare と Discourse の間に依然として存在し、中間に位置しています。

つまり、これは 1panel によって導入された技術的な制約です。

VPS で複数のサーバーを稼働させていますか、それとも Discourse だけを稼働させていますか?Discourse だけを稼働させている場合、1panel は不要なはずです。1panel が必要な技術的な理由がある場合を除きます。

私の Discourse は、Cloudflare の背後にある VPS でネイティブに稼働しています。この設定は問題なく動作しています。

Discourse 以外にも、OpenClaw がありますね :grinning_face:

ほぼ間違いありません。

表示されている IP は 1panel コンテナの IP ですか?

管理者としてユーザーを表示すると、最後に使用されたIPアドレスがCloudflareのIPアドレスとして表示されます。

これを実装しましたか?

https://support.cpanel.net/hc/en-us/articles/360051107513-How-to-restore-visitors-IP-with-mod-remoteip#:~:text=The%20Apache%20mod_remoteip%20module%20restores%20the%20original,instead%20of%20the%20original%20visitor’s%20IP%20address.

これは、Cloudflare の IP アドレスではなくエンドユーザーの IP アドレスを使用するように Apache を修正するためのものです。

ありがとうございます。私は nginx を使用しています。いくつかのチュートリアルを確認したところ、ホストの nginx 設定ファイルにリバースプロキシを設定する方法が紹介されていました。時間ができたら試してみます。

Cloudflare のテンプレートを提案通りインストールしましたか?もしそうでないなら、なぜここで助けを求めているのですか?

Cloudflare のテンプレートについてです。yml 設定ファイルを変更して Cloudflare テンプレートを有効にしましたが、Discourse は 1Panel 経由でコンテナ化してデプロイしています(1Panel のアーキテクチャ:ユーザー → Cloudflare → 1Panel Nginx → Discourse コンテナ)。yml ファイルの変更だけでは不十分で、1Panel 内のリバースプロキシ用 Nginx 設定ファイルも変更する必要があります。現在は時間がなく、まだ手をつけていません。

1Panel の nginx インスタンスを修正して、ユーザーリクエストに対して real_ip 機能 を利用する必要があるようです。Cloudflare は CF-Connecting-IP ヘッダーと共にこの情報を送信するため、そのヘッダーを使って nginx に動作を指示 することができます。

定期的に Cloudflare のプロキシアドレスリスト(IPv4IPv6)をダウンロードして nginx の real_ip 範囲を最新に保つ、スクリプトベースの自動化を作成すると有益でしょう。

1Panel の nginx.conf ファイルにアクセスできない場合、おそらく解決策はないでしょう。自己ホスト型の Discourse の前にリバースプロキシを管理している場合、この問題は nginx の real_ip と Cloudflare の CF-Connecting-IP ヘッダーを組み合わせることで解決することを想定しています。