هل التغييرات الأخيرة تكسر إعداد المجلدات الفرعية؟

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

حاليًا، عند تسجيل الدخول باستخدام SSO أو عند التبديل من/إلى الوضع المجهول (وربما في حالات أخرى لم أكتشفها بعد)، يتم إعادة توجيهي إلى https://my_machine/discourse_path_stuff، بدلاً من إعادة التوجيه إلى https://my_machine/forum/discourse_path_stuff. كما أنه عندما أذهب إلى https://my_machine/forum (النهاية الصحيحة)، يتم إعادة كتابة شريط العناوين ليقول https://my_machine (مع إزالة المجلد الفرعي)، على الرغم من أن معظم الروابط تبدو أنها تحل إلى الأماكن الصحيحة.

للأسف، لا أتذكر أي إصدار كنت أستخدمه عندما كانت الأمور تعمل بشكل صحيح، لكنني متأكد تقريبًا أنه كان ضمن مظلة “2.4.0.beta10”، وكان على الأرجح خلال الـ 10 أيام الماضية. وأنا أعمل حاليًا على الإصدار bd49d4af1a.

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

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

هل يمكنك مشاركة عنوان URL للموقع؟ هل تستخدمون بروتوكول SSO الخاص بنا أم استراتيجية OAuth2 / omniauth أخرى؟

إعجابَين (2)

بالتأكيد، إنه موجود في https://py.mit.edu/forum (لكنه محظور حاليًا من العرض العام). يُظهر https://py.mit.edu/forum/login المشكلة (على الرغم من أنني أضفت قاعدة NGINX أخرى تحديدًا لإعادة توجيه 302 من https://py.mit.edu/login إلى https://py.mit.edu/forum/login بمجرد أن بدأنا نلاحظ هذه المشكلة، وهو ما كان حلاً مؤقتًا لجزء SSO على الأقل).

نحن نستخدم بروتوكول Discourse SSO، والذي كان يعمل بسلاسة بالتأكيد من قبل. لا يزال المصافحة يبدو أنه يحدث بشكل صحيح، فقط إعادة التوجيه إلى المكان الخطأ في النهاية. ومع ذلك، فإن المفتاح "return_sso_url" في حمولة SSO يعود إلى نقطة نهاية SSO لدينا بشكل صحيح (مع /forum).

جربت أيضًا إعادة البناء، لكن هذا لم يبدو أنه يحل المشكلة.

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

3 إعجابات

أرى أيضًا أن الرابط للدخول/الخروج من الوضع المجهول يستخدم window.location.reload() لإعادة تحميل الصفحة بعد إرسال طلب إلى نقطة نهاية للتبديل إلى الوضع المجهول. لذا فإن إعادة التحميل هذه ستُظهر بالتأكيد عنوان URL المُعاد كتابته (الذي لم يعد يحتوي على /forum)، مما يتسبب في هذه المشكلة (غير متأكد ما إذا كانت القصة مماثلة لمشاكل SSO).

سألقي نظرة سريعة على مجموعات التغييرات الأخيرة لأرى ما إذا كان العنصر الذي (أعتقد؟) يعيد كتابة window.location هو إضافة حديثة.

أيضًا، Discourse.getURL('/login') لا يزال يعطيني النتيجة الصحيحة (مع /forum).

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

تُعاد تعيين المسارات بدون بادئة المجلد الفرعي في شريط عناوين المتصفح.

مثال:
أزور example.com/forum → بعد تحميل المنتدى، يُظهر شريط العناوين example.com
ثم أضغط على “الأحدث” → ينتقل إلى الأحدث ويُظهر شريط العناوين example.com/forum/latest
أقوم بتحديث الصفحة في المتصفح، فتُحدّث الموقع ويُظهر شريط العناوين example.com/latest
عند التحديث مرة أخرى وأكون على example.com/latest، يظهر خطأ 404 (لأن nginx يقوم بتوجيه /forum فقط إلى discourse).

تظهر معاينة الرابط في أسفل يسار المتصفح كـ example.com/latest، example.com/new، إلخ. عند تحديث موضوع ما، يتم حذف /forum من الرابط، لكنه يتغير مرة أخرى لاحقًا إلى /forum/t/[…].

كنت أستخدم الإصدار 2.4.0.beta2 سابقًا ولا أتذكر وجود هذه المشكلة.

3 إعجابات

هل تم إنشاء هذا التثبيت وفقًا لـ دعم المجلدات الفرعية مع Docker؟ هل يمكنك توفير رابط له؟

7 إعجابات

نعم، جربتها أيضًا على تثبيت محلي جديد وحصلت على نفس المشكلة:

app.yml

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"

expose:
 - 80:80

params:
  db_default_text_search_config: "pg_catalog.english"
  version: tests-passed

env:
  LANG: en_US.UTF-8
  UNICORN_WORKERS: 3
  DISCOURSE_RELATIVE_URL_ROOT: /forum
  DISCOURSE_HOSTNAME: localhost
  DISCOURSE_DEVELOPER_EMAILS: yyy

  DISCOURSE_SMTP_ADDRESS: yyy
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: yyy@yyy.yyy
  DISCOURSE_SMTP_PASSWORD: yyy
  DISCOURSE_SMTP_AUTHENTICATION: login

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
            - git clone https://github.com/discourse/docker_manager.git

run:
    - exec:
        cd: $home
        cmd:
          - mkdir -p public/forum
          - cd public/forum && ln -s ../uploads && ln -s ../backups
    - replace:
       global: true
       filename: /etc/nginx/conf.d/discourse.conf
       from: proxy_pass http://discourse;
       to: |
          rewrite ^/(.*)$ /forum/$1 break;
          proxy_pass http://discourse;
    - replace:
       filename: /etc/nginx/conf.d/discourse.conf
       from: etag off;
       to: |
          etag off;
          location /forum {
             rewrite ^/forum/?(.*)$ /$1;
          }
5 إعجابات

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

6 إعجابات

عظيم، شكرًا لك! يسعدني أن أعرف أنني لستُ مجنونًا.

ومع ذلك، بعد التصفح في الالتزامات الأخيرة (أو القريبة من ذلك)، لم أستطع رؤية نقطة واضحة حيث يحدث هذا إعادة الكتابة. هل من الممكن الحصول على مؤشر إلى المكان الذي يحدث/حدث فيه هذا في الكود؟ (أنا في عملية محاولة التعرف على قاعدة الكود).

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

نعم، يمكن ذلك! لكنني لست الشخص المناسب. أنا مجرد “ذلك الشخص” في الفريق الذي يمتلك تثبيتًا محليًا في مجلد فرعي، لكنني لست مهندسًا. يجب أن يتمكن ديفيد من توجيهك إلى الاتجاه الصحيح عندما يبدأ العمل على هذه المشكلة في وقت لاحق من هذا الأسبوع.

6 إعجابات

على الأرجح هذا التغيير الذي كان من أجل هذه المشكلة. لست متأكدًا تمامًا من ماهية المشكلة، لكنني سأقوم بالتحقيق فيها :eyes:

6 إعجابات

اتضح أن الأمر لا علاقة له بتلك الإضافة على الإطلاق. لقد عثرتُ على مصدر المشكلة، والحل قيد التنفيذ:

12 إعجابًا

عمل ممتاز أيها المحقق :man_detective: @david :clap:

6 إعجابات

تم الدمج الآن - @hartz و @bokos، هل يمكنكم تأكيد أن المشكلة قد حُلت بعد التحديث؟

5 إعجابات

بعد إجراء بعض الاختبارات، يبدو أن الأمور تعمل بالفعل مرة أخرى. شكرًا لك، @david!

إعجابَين (2)