외부 도메인의 하위 디렉터리에서 Discourse를 실행하는 방법?

nginx를 사용하여 이 문제를 해결할 수 있었습니다. 워커에 대해 잘 모르기 때문에 워커 사용은 포기했습니다…

아이디어는 루트 도메인이 제가 관리하는 서버를 가리키게 하고, 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로 접속하면 홈페이지 대신 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 가이드를 따랐는데 마지막에 포럼에 접근할 수 없다면, 어떤 단계에서 크게 실수를 한 것입니다.

서버를 삭제하고 다시 시도하세요.