Discourse خطأ nginx مزدوج: تعذر العثور على الوحدة `handlebars` المستوردة من `discourse-common/lib/raw-handlebars`

مرحباً!
يستخدم موقعي الإلكتروني الإصدار 2.9 من discourse. لسبب ما، اضطررت إلى استخدام nginx مزدوج لـ discourse. قمت بنشر عقدتين حاويتين web_only لـ discourse واستخدمت nginx للوكالة أمامهما. رسم تخطيطي لبنية النظام الخاص بي:

لقد كنت مرتبكًا عندما قامت وكالة nginx المخصصة الخاصة بي بتوجيه عقدتين web_only وتوزيع الطلبات عشوائيًا إلى أي عقدة web_only، أبلغ موقع discourse الخاص بي أحيانًا عن أخطاء: تعذر العثور على الوحدة ‘handlebars’ المستوردة من ‘discurse-common /lib/raw-handlebars’، وفي هذا الوقت تظهر شاشة فارغة عند زيارة الموقع من المتصفح. ولكن عندما استخدمت وكالة nginx المخصصة لتوجيه جميع الطلبات إلى عقدة web_only واحدة فقط، لا يحدث هذا الخطأ. لقد بحثت عن هذه المشكلة، وكانت هناك بعض الالتزامات السابقة لحل نفس هذا الخطأ، وأكدت أن نسختي تحتوي على رمز هذه الالتزامات.

Could not find module 'handlebars' imported from 'discourse-common/lib/raw-handlebars'

Broken instance after updating to 2.9.0.beta2 - #11 by david

هل يعرف أحد السبب؟ شكراً جزيلاً

بالمناسبة، شارك مشكلة حيث يتسبب استخدام nginx مزدوج في عدم القدرة على الحصول على عنوان IP الحقيقي للمستخدم.
هذا لأن nginx المخصص الخاص بي يمكّن حقل رأس X-Forwarded-For للحصول على عنوان IP الخاص بالعميل، ولكنه لا يعطل X-Forwarded-For الخاص بـ nginx الخاص بـ discourse. يتسبب في الكتابة فوق تكوين X-Forwarded-For الخاص بـ nginx المخصص بواسطة nginx الخاص بـ discourse.

ولا يهم أي واحدة تستخدمها؟ وهل تعملان بنفس الصورة؟ هذا محير.

الميزة الوحيدة التي يمكنني رؤيتها لتشغيل حاويتين بهذه الطريقة على نفس المضيف هي إمكانية إجراء ترقيات بدون انقطاع. نظرًا لأنك لا تقوم بالترقية كثيرًا، يبدو أن لديك تعقيدًا غير ضروري.

تحتاج إلى شيء كهذا في web_only.yml الخاص بك:

after_bundle_exec:
  - replace:
    filename: /etc/nginx/conf.d/discourse.conf
    from: "types {"
    to: |
      set_real_ip_from 172.16.0.0/12;
      set_real_ip_from 10.0.0.0/8;
      real_ip_recursive on;
      real_ip_header X-Forwarded-For;
      types {

شكراً جزيلاً على ردك.

نعم، لا يهم أي منهما أستخدم. إنهما يعملان بنفس الصورة web_only. سأستمر في البحث عن مشاكل باستخدام الوضع الآمن (safe-mode) وإذا كانت هناك أي استنتاجات سأبلغ هنا.

آسف لسوء الفهم في رسم تخطيطي لبنية النظام، لقد استخدمت جهازًا مختلفًا لنشر web_only. السبب في أنني أستخدم web_only مزدوجًا هو أن حاوية web_only الخاصة بي تعطلت ذات مرة بسبب كثرة الاتصالات، لكنني لم أكتشف السبب في ذلك الوقت. لذلك حاولت استخدام web_only مزدوج لتجنب نفس المشكلة مرة أخرى.

شكراً، لقد ساعدني هذا في حل مشكلة الحصول على عنوان IP الحقيقي للمستخدم.

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

هذا منطقي.

هناك إعداد لزيادة عدد الاتصالات.

أود الترقية. يجب أن تكون هناك مشكلة في هذا الإصدار وأنا متأكد من أنه تم إصلاح العديد من مشكلات الأمان منذ ذلك الحين.

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

شكرا لك. في الوقت الحالي، ما زلت أحصل على نفس الخطأ عند محاولة تصحيح الأخطاء في الوضع الآمن. سأكون مستعدًا لمحاولة ترقية discourse الخاص بي لمعرفة ما إذا كان يعمل.

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

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.