كيفية تشغيل discourse في دليل فرعي لنطاق خارجي؟

لقد تمكنت من حل هذه المشكلة باستخدام nginx. لقد استسلمت بشأن الـ workers لأنني لا أعرف الكثير عنها…

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

server
{
    listen 80;
    server_name test.ultraluz.com.br;

    location /blog {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

       location /stylesheets {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/stylesheets;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    
       location /assets {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/assets;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

        location /svg-sprite {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/svg-sprite;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

        location /404-body {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/404-body;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

        location /message-bus {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/message-bus;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

               location /latest.json {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/latest.json;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

                       location /javascripts {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/javascripts;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

                            location /logs {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/logs;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

                                  location /u {
        proxy_set_header Host forum.ultraluz.com.br;
        proxy_pass https://forum.ultraluz.com.br/u;
        proxy_redirect https://forum.ultraluz.com.br/ http://test.ultraluz.com.br/blog;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

هذا يعمل، لكن لدي مشكلة واحدة فقط. عندما يزور الناس /blog، يرون صفحة 404 الخاصة بـ Discourse التي تفيد بعدم وجود الصفحة بدلاً من الصفحة الرئيسية؟ لست متأكدًا مما قد يسبب هذا؟

أنت تسلك مسارًا خاطئًا بمحاولة سرد كل مسار فردي في ملف nginx الخاص بك. لن ينجح ذلك أبدًا.

أولاً، قم بتثبيت discourse على خادم باتباع الإرشادات الواردة في Serve Discourse from a subfolder (path prefix) instead of a subdomain. استخدم نطاقًا داخليًا لهذا الغرض حتى تعمل التكوينات بشكل صحيح. ستحتاج أيضًا إلى إزالة قوالب ssl من ملف app.yml.

بعد ذلك، في الخادم الذي تتحكم فيه في النطاق الفعلي، أضف كتلة location واحدة تحتوي على المجلد الفرعي، واستخدم توجيهات الوكيل (proxy directives) اللازمة لإرسال حركة المرور إلى الخادم الذي يقع عليه discourse.

لقد جربت اتباع ذلك الدليل…

 DISCOURSE_RELATIVE_URL_ROOT: /blog
 DISCOURSE_HOSTNAME: forum.ultraluz.com.br

لذلك توقعت أن أتمكن من الوصول إلى المنتدى عبر forum.ultraluz.com.br/blog، لكنني لم أحصل سوى على رفض للاتصال، وهذا ما أعتقد أنه مربك في ذلك الدليل.

ليس واضحًا ما هو عنوان URL الذي يجب استخدامه لجلب الأصول…

إذا اتبعت الدليل الموجود على Serve Discourse from a subfolder (path prefix) instead of a subdomain ولم تتمكن من الوصول إلى المنتدى في النهاية، فهذا يعني أنك ارتكبت خطأً جسيمًا في إحدى الخطوات.

قم بتدمير الخادم وحاول مرة أخرى.