# 如何在外部域名的子目录中运行 Discourse？

**URL:** <https://meta.discourse.org/t/how-to-run-discourse-on-subdirectory-of-external-domain/134788>\
**Category:** Self-hosting\
**Tags:** unsupported-install\
**Created:** [2019年十二月1日 08:15 UTC](https://meta.discourse.org/t/how-to-run-discourse-on-subdirectory-of-external-domain/134788 "2019-12-01T08:15:08Z")\
**Posts on this page:** 4\
**Page:** 2

<div class="post-metadata">

**Author:** ![UltraLuz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ultraluz/32/160013_2.png) [@UltraLuz](https://meta.discourse.org/u/UltraLuz)\
**Post date:** [2019年十二月13日 00:18 UTC](https://meta.discourse.org/t/how-to-run-discourse-on-subdirectory-of-external-domain/134788/21 "2019-12-13T00:18:46Z")

</div>

所以我已经用 nginx 解决了这个问题。我放弃了 workers，因为我对它们不太了解……

我的想法是，将我的根域名指向我控制的服务器，然后让 nginx 将这两个平台合并在一起。

```plaintext
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 页面（显示不存在），而不是首页？我不确定是什么导致了这个问题？

 ![image](https://global.discourse-cdn.com/meta/original/3X/e/2/e253e4de1c073e4430dabb08ee62754f67abf109.png)

---

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2019年十二月13日 00:36 UTC](https://meta.discourse.org/t/how-to-run-discourse-on-subdirectory-of-external-domain/134788/22 "2019-12-13T00:36:03Z")

</div>

试图在 nginx 配置文件中列出所有路由是走错了方向，这永远行不通。

首先，按照 [Serve Discourse from a subfolder (path prefix) instead of a subdomain](https://meta.discourse.org/t/subfolder-support-with-docker/30507?u=falco) 的指南在服务器上安装 Discourse。为此请使用内部域名，以确保配置生效。同时，您还需要从 app.yml 中移除 SSL 模板。

然后，在您控制实际域名的服务器上，添加一个包含子文件夹的 location 块，并使用必要的代理指令将流量转发到 Discourse 所在的服务器。

---

<div class="post-metadata">

**Author:** ![UltraLuz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ultraluz/32/160013_2.png) [@UltraLuz](https://meta.discourse.org/u/UltraLuz)\
**Post date:** [2019年十二月13日 06:58 UTC](https://meta.discourse.org/t/how-to-run-discourse-on-subdirectory-of-external-domain/134788/24 "2019-12-13T06:58:39Z")

</div>

我已经按照该指南操作了…

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

```

因此，我原本以为访问 `forum.ultraluz.com.br/blog` 就能进入论坛，但只收到了“连接被拒绝”的错误。我觉得这正是该指南让人困惑的地方。

目前尚不清楚我们应该使用哪个 URL 来加载资源…

---

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2019年十二月13日 17:15 UTC](https://meta.discourse.org/t/how-to-run-discourse-on-subdirectory-of-external-domain/134788/25 "2019-12-13T17:15:02Z")

</div>

如果您遵循了 [Serve Discourse from a subfolder (path prefix) instead of a subdomain](https://meta.discourse.org/t/subfolder-support-with-docker/30507) 指南，但在最后无法访问论坛，说明您在某个步骤中严重操作失误。

请销毁服务器并重新尝试。

[上一頁](https://meta.discourse.org/t/how-to-run-discourse-on-subdirectory-of-external-domain/134788.md?page=1)
