1panel コンテナで Discourse をデプロイし、リバースプロキシを設定して Web サイトを構築しました。ドメインに Cloudflare CDN を使用したところ、すべてのトラフィックがユーザーのブラウザ IP ではなく、Cloudflare のサーバーから来ているように表示される問題の解決方法を教えてください。
アプリの app.yml で Cloudflare テンプレート を使用したいですね。
試してみましたが、ダメでした
。失敗の原因は、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 がありますね ![]()
ほぼ間違いありません。
表示されている IP は 1panel コンテナの IP ですか?
管理者としてユーザーを表示すると、最後に使用されたIPアドレスがCloudflareのIPアドレスとして表示されます。
これを実装しましたか?
これは、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 のプロキシアドレスリスト(IPv4、IPv6)をダウンロードして nginx の real_ip 範囲を最新に保つ、スクリプトベースの自動化を作成すると有益でしょう。
1Panel の nginx.conf ファイルにアクセスできない場合、おそらく解決策はないでしょう。自己ホスト型の Discourse の前にリバースプロキシを管理している場合、この問題は nginx の real_ip と Cloudflare の CF-Connecting-IP ヘッダーを組み合わせることで解決することを想定しています。