تثبيت Discourse على الإنترنت المنزلي باستخدام Cloudflare Tunnel

يا @Falco، هل يأتي عنوان IP الحقيقي (الذي توفره CF كرأس CF-Connecting-IP) إليك في سجلات nginx؟ لا يأتي إليّ. أرى فقط عنوان IP الخاص بـ cloudflared.

أعتقد أنه يجب القيام بأحد هذين الأمرين أو كليهما (سأتابع بعد التحقيق):

  • إضافة سطر تكوين set_real_ip_from إلى nginx لعنوان IP الخاص بـ cloudflared. إذا تبين أن هذه هي المشكلة، فأنا أخمن أنه لا يلزم وجود أي من أسطر set_real_ip_from الأخرى (الموفرة بواسطة templates/cloudflare.template.yml) لمستخدمي argotunnel. وفي هذه الحالة، ربما يجب إضافة قالب argotunnel منفصل إلى مستودع docker الذي يسحب عنوان IP الخاص بـ cloudflared الخاص بك من متغير بيئة أو شيء ما في app.yml الرئيسي الخاص بك.
  • إصلاح 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; # نطاق عنوان IP الخاص بـ cloudflared/argotunnel الخاص بك
          real_ip_header CF-Connecting-IP;

هذا ينتهي تلقائيًا في سياق http الخاص بـ nginx، وهو مناسب بالمناسبة.

ملاحظة: في رأيي، من أجل النظافة، يجب أن يقوم قالب cloudflare أيضًا بإنشاء تكوين nginx الخاص به في ملف منفصل بدلاً من استخدام sed -i لإضافته إلى /etc/nginx/conf.d/discourse.conf.

إعجاب واحد (1)