مواقع متعددة مقابل حاويات متعددة

أردت أن أقدم تحديثًا عن وضعي.

بعد بعض الدراسة، قررت أنني بحاجة إلى إعداد متعدد المواقع (حاوية واحدة في هذه المرحلة) مع موقع nginx “خارجي” لشرح الإعداد وتوجيه الأشخاص وحركة المرور إلى مواقع discourse المنفصلة. بهذه الطريقة يمكنني جعل كلا الموقعين مفتوحين للقراءة فقط (ولمحركات الويب) دون أن يضطر الأشخاص الموجودون على القائمة 1 إلى التعامل مع المحتوى من القائمة 2. قد أحتاج إلى العبث بملف robots.txt لإرضاء محركات الويب.

كانت أمثلة إعداد المواقع المتعددة مفيدة، لكنني لم أتمكن من جعلها تعمل مع مقبس Unix (خطأ في البوابة)، لذلك انتهى بي الأمر بإعادة توجيهها إلى منفذ آخر وإعادة توجيه هذا المنفذ إلى 443 داخل الحاوية.

في ملف app.yml الخاص بي، قمت بتمكين قالب SSL ولكن ليس قالب letsencrypt.

لقد نجحت في تشغيل موقع الاختبار، والآن أبحث عن أي مشاكل قد تنشأ عند تحويل موقع الإنتاج، على أمل في وقت لاحق من هذا الشهر أو الشهر المقبل.

أنا أهتم بمشكلة الشهادة على جانب الخادم الخارجي، لكنني واجهت مشكلة “غير آمن” التي قمت بإصلاحها عن طريق طلب https داخل الحاوية. لدي مهمة سأقوم بتشغيلها عبر cron لنسخ أحدث شهادة ومفتاح إلى دليل /shared/ssl الخاص بالحاوية (باسم ssl.crt و ssl.key). لست متأكدًا مما إذا كنت سأحتاج إلى فرض إعادة تحميل nginx داخل الحاوية للتأكد من تحميل شهادة جديدة عند تغييرها (في يوليو، أعتقد).

لقد واجهت مشكلة واحدة في discourse:

في ملف الحاوية /etc/nginx/conf.d/discourse.conf يوجد هذا الجزء من التعليمات البرمجية (تم تغيير اسم النطاق):

if ($http_host != 'site1.my.domain') {
   rewrite (.*) https://site1.my.domain$1 permanent
}

كان هذا يتسبب في إعادة توجيه site2.my.domain إلى site1.my.domain، لذلك كان عليّ التعليق عليه.

ملاحظة: إعادة بناء الحاوية تتطلب إعادة القيام بهذا التعديل، هل هناك طريقة لتجنب ذلك؟

وأدى ذلك إلى مشكلة في المتصفح، لأن فايرفوكس قد أشار إلى هذا التوجيه على أنه دائم، لذلك كان عليّ حذف ذاكرة التخزين المؤقت للمتصفح. (لقد استغرق مني ذلك وقتًا طويلاً جدًا لمعرفة ذلك!)

لقد توصلت إلى شيء غريب آخر.

على موقع الاختبار الخاص بي، لم يتم تحديد المعلمة المطلوبة لـ https لكلا الموقعين. على موقع الإنتاج الخاص بي، هذه المعلمة غير موجودة حتى في ملف الإعدادات. أنا أخمن أن هذا له علاقة بالاختلافات بين الموقعين.