HTTPS عبر الوكيل: لا يزال Discourse يحاول جلب الملفات باستخدام HTTP

مرحبًا! لقد حاولت للتو إعداد منتدى Discourse الخاص بي. عند النقر على الرابط في البريد الإلكتروني، رأيت زرًا لكن لم أستطع الضغط عليه. لاحظت العديد من الأخطاء التي يبدو أنها ناتجة عن محاولة تحميل الملفات عبر HTTP. قد يكون ذلك بسبب أنني لا أستخدم HTTPS من خلال Discourse، بل عبر خادم الويب apache2 الخاص بي باستخدام ProxyPass. كيف يمكنني جعله يطلب الملفات عبر HTTPS دون استخدام HTTPS من Discourse؟ (أو أخبرني بطريقة لاستخدام ملفات .crt و .key الموجودة بالفعل بسهولة مع Discourse والتي ستعمل بشكل جيد أيضًا :wink:)

هل قمت بتفعيل فرض HTTPS في Discourse؟

كيف يمكنني القيام بذلك؟ (دون استخدام LetsEncrypt أو SSL عبر Discourse)
هل يكفي أن أزيل التعليق عن templates/web.ssl.template.yml وأترك templates/web.letsencrypt.ssl.template.yml مُعلَّقًا؟ (عذرًا على السؤال، لكن إعادة البناء تستغرق وقتًا طويلاً لذا أفضل التأكد أولًا)

ما عليك سوى الانتقال إلى الإعدادات وتفعيل خانة الاختيار التي تنص على “إجبار HTTPS”.

وللتوضيح فقط، تأكد بنسبة 100% من أن وكيلك العكسي (reverse proxy) قادر على التعامل مع SSL لـ Discourse قبل تفعيل هذا الإعداد.

:warning: لا يتوافق Discourse جيدًا مع Apache2 … إذا أمكن، انتقل إلى Nginx.

انتظر، أي إعدادات؟ وأين بالضبط سأجد مربع الاختيار؟

community.example.net/admin هو المسار الذي ستجد فيه لوحة تحكم Discourse الخاصة بك.

ولكني أحتاج أولاً إلى حساب على منتداي، ولا يمكنني إنشاؤه دون حل مشكلة HTTPS

يمكنك تمكين SSL القسري عبر وحدة التحكم:

./launcher enter app
rails c
SiteSetting.force_https = true
exit
exit

هل يجب علي إعادة البناء أو القيام بأي شيء بعد ذلك؟
تعديل: لقد قمت بإعادة البناء. ما زلت أحصل على نفس الخطأ الذي ينص على أن بعض الملفات لا تزال تُحمّل عبر HTTP

تم إزالة force_https من واجهة الإدارة لأنها تسببت في مزيد من الارتباك أكثر من أي شيء آخر.

بما أن Discourse يقوم بتثبيت HTTPS افتراضيًا الآن، فإن الحالات مثل هذه فقط هي التي تتطلب تمكينه يدويًا.

لم يكن مفعّلاً افتراضيًا بالنسبة لي. واجهت صعوبة في استخدام سكريبت التثبيت، لذا قمت بتعديل ملف app.yml. هل هذا هو السبب؟

هل تقوم بإجراء اتصالات HTTP خلف الوكيل عن طريق تعطيل القالب الخاص بـ HTTPS؟

كانت قوالب HTTPS الاثنان معطّلة افتراضيًا بالنسبة لي.
يعمل Discourse على المنافتين الافتراضيتين على الخادم 2.
أنا أستخدم بعد ذلك ProxyPass في VHost لـ apache2 (الذي يعمل على الخادم 1) حيث تم إعداد SSL.
لاحظت للتو أنه يمكنني ببساطة تمكين HTTPS عبر Discourse، وبما أن Discourse يعمل على المنافتين الافتراضيتين، فيمكنني ببساطة وضع community.website.tld على عنوان IP الخاص بالخادم 2.
كيف يمكنني تمكين SSL؟ هل يجب إلغاء التعليق على القالبين ثم إدخال بريد إلكتروني من LetsEncrypt؟ أيضًا، كيف أنشئ حسابًا على LetsEncrypt؟ لا أستطيع العثور على أي زر “تسجيل” على موقعهم الإلكتروني.

نعم، تقريبًا، فعّل القالب لـ HTTPS و Let’s Encrypt، وتأكد من فتح المنفذ 443 وحدد عنوان بريد إلكتروني قبل إعادة البناء.

هناك أسباب قليلة جدًا وجيدة لوضع Discourse خلف وكيل. إذا كان لديه خادم مخصص واسم نطاق كامل (FQDN)، فسيكون من الأسهل بكثير إدارته مع الإعدادات المذكورة أعلاه.

لكن أي بريد إلكتروني يجب أن أحدده هناك؟ يذكر أنه لحساب LetsEncrypt، لذا هل علي إنشاء حساب؟ وأين أفعل ذلك؟

فقط بريد إلكتروني لاستقبال الإشعارات. لا حاجة لتسجيله مسبقًا.

لقد قمت للتو بتفعيل SSL وكل شيء، لكنني الآن أواجه خطأ 502 من Cloudflare.

تأكد من أن الوكيل يقوم بتعيين رأس X-Forwarded-Proto إلى https بشكل مناسب، مما يجب أن يحل مشكلة اكتشاف HTTPS.

أوقف Cloudflare مؤقتًا. ما لم تكن تتعرض لهجمات متكررة، فإنّه يسبب ضررًا أكثر من نفعه.

إذا كانت السحابة البرتقالية مفعلة، فلن يتمكن Discourse من إصدار شهادة من Let’s Encrypt.

تم ذلك. يعمل HTTPS الآن، حيث يتم تحميل كل شيء عبر HTTPS، ولكن:
لا يزال لا يمكنني الضغط على الزر في صفحة التحقق من الحساب.


يوجد خطأ وبعض التحذيرات في وحدة التحكم أيضًا: