مرحباً!
يستخدم موقعي الإلكتروني الإصدار 2.9 من discourse. لسبب ما، اضطررت إلى استخدام nginx مزدوج لـ discourse. قمت بنشر عقدتين حاويتين web_only لـ discourse واستخدمت nginx للوكالة أمامهما. رسم تخطيطي لبنية النظام الخاص بي:
لقد كنت مرتبكًا عندما قامت وكالة nginx المخصصة الخاصة بي بتوجيه عقدتين web_only وتوزيع الطلبات عشوائيًا إلى أي عقدة web_only، أبلغ موقع discourse الخاص بي أحيانًا عن أخطاء: تعذر العثور على الوحدة ‘handlebars’ المستوردة من ‘discurse-common /lib/raw-handlebars’، وفي هذا الوقت تظهر شاشة فارغة عند زيارة الموقع من المتصفح. ولكن عندما استخدمت وكالة nginx المخصصة لتوجيه جميع الطلبات إلى عقدة web_only واحدة فقط، لا يحدث هذا الخطأ. لقد بحثت عن هذه المشكلة، وكانت هناك بعض الالتزامات السابقة لحل نفس هذا الخطأ، وأكدت أن نسختي تحتوي على رمز هذه الالتزامات.
بالمناسبة، شارك مشكلة حيث يتسبب استخدام nginx مزدوج في عدم القدرة على الحصول على عنوان IP الحقيقي للمستخدم.
هذا لأن nginx المخصص الخاص بي يمكّن حقل رأس X-Forwarded-For للحصول على عنوان IP الخاص بالعميل، ولكنه لا يعطل X-Forwarded-For الخاص بـ nginx الخاص بـ discourse. يتسبب في الكتابة فوق تكوين X-Forwarded-For الخاص بـ nginx المخصص بواسطة nginx الخاص بـ discourse.
ولا يهم أي واحدة تستخدمها؟ وهل تعملان بنفس الصورة؟ هذا محير.
الميزة الوحيدة التي يمكنني رؤيتها لتشغيل حاويتين بهذه الطريقة على نفس المضيف هي إمكانية إجراء ترقيات بدون انقطاع. نظرًا لأنك لا تقوم بالترقية كثيرًا، يبدو أن لديك تعقيدًا غير ضروري.
نعم، لا يهم أي منهما أستخدم. إنهما يعملان بنفس الصورة web_only. سأستمر في البحث عن مشاكل باستخدام الوضع الآمن (safe-mode) وإذا كانت هناك أي استنتاجات سأبلغ هنا.
آسف لسوء الفهم في رسم تخطيطي لبنية النظام، لقد استخدمت جهازًا مختلفًا لنشر web_only. السبب في أنني أستخدم web_only مزدوجًا هو أن حاوية web_only الخاصة بي تعطلت ذات مرة بسبب كثرة الاتصالات، لكنني لم أكتشف السبب في ذلك الوقت. لذلك حاولت استخدام web_only مزدوج لتجنب نفس المشكلة مرة أخرى.
شكراً، لقد ساعدني هذا في حل مشكلة الحصول على عنوان IP الحقيقي للمستخدم.
شكرا لك. في الوقت الحالي، ما زلت أحصل على نفس الخطأ عند محاولة تصحيح الأخطاء في الوضع الآمن. سأكون مستعدًا لمحاولة ترقية discourse الخاص بي لمعرفة ما إذا كان يعمل.