Cloudflare Tunnelを使った家庭用インターネットへのDiscourseインストール

Falcoさん、こんにちは。CloudflareのCF-Connecting-IPヘッダーから提供されるreal_ipは、nginxのログで取得できていますか?私の方では取得できておらず、cloudflaredのIPしか見えていません。

調査の結果、以下のいずれか、または両方の対応が必要だと思われます。

  • nginxの設定にcloudflaredのIPに対するset_real_ip_fromの行を追加する。もしこれが問題であれば、templates/cloudflare.template.ymlで提供されている他のset_real_ip_from行は、argotunnelユーザーには不要になると思われます。その場合、dockerリポジトリに、メインのapp.ymlから環境変数などであなたのcloudflared IPを取得する別のargotunnelテンプレートを追加する必要があるかもしれません。
  • ~~log_formatを修正する。これはおそらく問題ではないと思いますが。~~確認済み、不要です。

編集:
動作させるために行っていることは以下の通りです。

Cloudflareテンプレートは使用しないでください。意味がありません。
代わりに、これをapp.ymlにマージしてください。

hooks:
  after_web_config:
    - file:
        path: /etc/nginx/conf.d/cloudflare_tunnel_real_ip.conf
        contents: |
          # 元の訪問者のIPを復元 (ngx_http_realip_module)
          set_real_ip_from 10.100.20.200/32; # あなたのcloudflared/argotunnel IP範囲
          real_ip_header CF-Connecting-IP;

これは自動的にnginxのhttpコンテキストに配置されるので、適切です。

追伸:個人的には、クリーンにするために、Cloudflareテンプレートもsed -iを使用して/etc/nginx/conf.d/discourse.confに追加するのではなく、個別のファイルにnginx設定を生成するべきだと思います。

「いいね!」 1