Wie man Discourse in einem Unterverzeichnis einer externen Domain ausführt?

Ich habe das Problem also mit nginx lösen können. Ich habe es mit den Workern aufgegeben, da ich nicht viel darüber weiß…

Die Idee ist, dass meine Root-Domain auf einen von mir kontrollierten Server zeigt und ich nginx die beiden Plattformen zusammenführen lasse.

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;
    }
}

Das funktioniert, aber ich habe nur ein Problem. Wenn Leute zu /blog gehen, sehen sie stattdessen der Discourse-404-Seite, dass die Startseite nicht existiert? Ich bin mir nicht sicher, was das verursachen könnte?

Du begehst einen falschen Weg, wenn du versuchst, jede einzelne Route in deiner nginx-Datei aufzulisten. Das wird niemals funktionieren.

Installiere Discourse zunächst auf einem Server gemäß Serve Discourse from a subfolder (path prefix) instead of a subdomain. Verwende dafür eine interne Domain, damit die Konfiguration funktioniert. Du musst zudem die SSL-Vorlagen aus der app.yml entfernen.

Füge dann auf dem Server, auf dem du die eigentliche Domain kontrollierst, einen einzigen location-Block mit dem Unterordner hinzu und verwende die erforderlichen Proxy-Direktiven, um den Verkehr an den Server zu leiten, auf dem Discourse läuft.

Ich habe den Ratgeber befolgt…

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

Ich ging also davon aus, dass ich das Forum über forum.ultraluz.com.br/blog erreichen kann, erhalte aber nur eine Verbindung verweigert-Meldung. Das ist meiner Meinung nach das Verwirrende an diesem Ratgeber.

Es ist nicht klar, welche URL wir verwenden sollen, um Assets abrufen zu können…

Wenn du die Anleitung unter Serve Discourse from a subfolder (path prefix) instead of a subdomain befolgt hast und am Ende nicht auf das Forum zugreifen kannst, hast du an irgendeiner Stelle einen schweren Fehler gemacht.

Zerstöre den Server und versuche es erneut.