外部ドメインのサブディレクトリでDiscourseを実行する方法は?

nginx でこれを解決できました。workers についてはあまり詳しくないため、あきらめました。

アイデアは、ルートドメインを私が管理するサーバーに指し示し、nginx で 2 つのプラットフォームを統合させることです。

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

これは動作しますが、1 つだけ問題があります。/blog にアクセスすると、ホームページではなく、Discourse の 404 ページが表示されてしまうのです。何が原因かわかりません。

nginx ファイルですべてのルートを個別にリストしようとするのは誤ったアプローチです。それでは決してうまくいきません。

まず、Serve Discourse from a subfolder (path prefix) instead of a subdomain の手順に従って、サーバーに Discourse をインストールしてください。設定が機能するように、内部ドメインを使用してください。また、app.yml から SSL テンプレートを削除する必要があります。

その後、実際のドメインを管理しているサーバーで、サブフォルダを含む単一の location ブロックを追加し、必要なプロキシディレクティブを使用して、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 のガイドに従った後、フォーラムにアクセスできない場合は、どこかで手順を大きく間違えています。

サーバーを破棄して、再度お試しください。