تحديث: تم الحل!
لحل المشكلة، تمكنت من تمكين force_https مما أدى إلى حل كل شيء بالنسبة لنا. اتضح أن مفاتيح المرور كانت تحاول التوجيه إلى http:// ولكن هذا المرور المختلط لم يتم تمييزه بواسطة المتصفح. اتضح أن CloudFlare لم يكن هو المشكلة مباشرة على الإطلاق. آمل أن يساعد هذا شخصًا آخر في المستقبل.
المنشور الأصلي:
المشكلة
مرحباً! لقد قمت مؤخرًا بنقل مثيل Discourse الخاص بي خلف نفق Cloudflare، ويبدو أن كل شيء يعمل بشكل جيد باستثناء مفاتيح المرور. فشلت عمليات تسجيل مفاتيح المرور الحالية والجديدة، لكنني لا أعتقد أن السجلات توضح تمامًا سبب فشلها. آمل أن يتمكن شخص ما هنا من مساعدتي في العثور على بقية معلومات استكشاف الأخطاء وإصلاحها التي أحتاجها لحل هذه المشكلة:
معلومات ذات صلة
حول إعداداتي
- استخدام Discourse Docker لنشر Discourse.
- يتم نشر Postgres و Redis خارجيًا.
- تم النشر على Ubuntu على مثيل AWS EC2.
- كما ذكرنا سابقًا، يوفر نفق Cloudflare شهادة TLS ويعمل كوكيل.
ما جربته
- لقد تحققت من إعداداتي للتأكد من أن Discourse يتوقع اسم المضيف الخاص بمنتدياتي (
forums.example.com) - تم تكوين Discourse للمنفذ 80 HTTP حيث أن Cloudflare يتعامل مع TLS
- عندما لم ينجح HTTP، حاولت فرض Discourse على استخدام SSL فقط عن طريق توفير شهادة موقعة ذاتيًا وإعادة توجيه Cloudflare إلى Discourse على المنفذ 443 باستخدام بروتوكول HTTPS.
- تأكدت من أن Cloudflare يمرر
forums.example.comإلى موقعي. أعرف أنه يفعل ذلك لأن أي رأس مضيف آخر يتسبب في حدوث خطأ 404 في NGINX الخاص بـ Discourse.
السجلات ذات الصلة
- هذا الجزء صعب بعض الشيء. لا يوفر Discourse أي شيء من جانب الخادم (على حد علمي) وسواء استخدمت Bitwarden أو iCloud Keychain أو Chrome أو Firefox، فإن النتيجة هي نفسها.
- سجلات مفتاح المرور نفسها شبه معدومة.
- كانت الجزء الأكثر فائدة الذي وجدته من وحدة تحكم أدوات المطور في Firefox / Chrome عند محاولة إنشاء مفتاح مرور جديد. يتم إرجاع ما يلي:
{
"errors": [
"The origin of the authentication request does not match the server origin."
]
}
هذا مؤشر واضح جدًا على وجود خطأ ما بين العميل و Discourse (المعروف أيضًا باسم الوكيل) ولكن هذه السجلات لا تشير إلى المعلومات التي يتم تمريرها ذهابًا وإيابًا لاستكشاف هذه المشكلة بشكل أكبر.
هل يمكن لأي شخص مساعدتي في معرفة أي إعدادات أخرى أو مواقع سجلات للتحقق منها، أو هل لديك أي توصيات أخرى لاستكشاف الأخطاء وإصلاحها؟ أجد أنه من غير المحتمل، ولكني أفترض أن خطأ في تكوين Nginx يمكن أن يكون عاملاً أيضًا. لدي في الأساس وكيل مزدوج بين العميل و Discourse مع تشغيل كل من CloudFlare و NGINX. هل يجب أن أعيد النظر في أي جزء من هذا الإعداد؟
من حيث الأولوية، بالتأكيد من الجيد إصلاحه ولكن نظرًا لأن لدي حوالي 8 مستخدمين فقط من بين آلاف المستخدمين الذين يستخدمون مفاتيح المرور (مع عمل طرق تسجيل الدخول الأخرى بشكل جيد) فأنا لا أضغط عليها كثيرًا.