CloudFlareとReal IP

Discourse で実際の IP アドレスを表示させようとしていますが、あまりうまくいっていません。Cloudflare の yml をセットアップに追加し、コンテナ内の discourse.conf に正しい行があることを確認しました。

set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;
real_ip_header CF-Connecting-IP;

また、ログで $http_cf_connecting_ip に正しい IP が設定されていることも確認しましたが、なぜか $remote_addr が正しく設定されていません。他にこのような問題に遭遇した方はいらっしゃいますか?

Cloudflareのテンプレートを使用してみてはどうでしょうか?

app.ymlの他のテンプレートがある場所に、以下を追加してください。

  - "templates/cloudflare.template.yml"
「いいね!」 1

ご回答ありがとうございます!Cloudflareテンプレートを使用しています。さらに調査したところ、Nginxに届くすべてのremote_addrがDockerアドレスであるため、機能していないようです。この原因を特定しようとしています。

ローカルのリバースプロキシサーバーも使用していますか?もしそうであれば、そのアドレスを set_real_ip 設定に追加する必要があります(そして、リバースプロキシがCloudflareの処理を行うかもしれません)。

意図的にリバースプロキシを実行しているわけではありませんが、app.yml でポートを公開するために特定の IP アドレスを指定しました。

expose:
  - "xxx.xxx.xxx.xxx:80:80"    # http
  - "xxx.xxx.xxx.xxx:443:443"  # https

わかりません。Docker IPをいくつか含める必要があるかもしれません。

Discourseが表示しているIPはDocker IPですか?

「いいね!」 2

標準のインストールに従いましたか? これは通常、テンプレートでそのまま機能します。

「いいね!」 2

お二人とも、ご協力ありがとうございました!最終的に、VPSのImmunify360がコンテナの前にプロキシとして自身を挿入していたことが判明しました。Docker IPをset_real_ip_fromに追加することで、Immunifyを無効にする方法を調査している間、一時的に問題が解決しました。

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.