如何在 discourse/docker 中直接更新 nginx 配置?

在 Web 模板文件中,我找到了更新 Nginx 配置文件(替换语句)的说明……

有没有办法向 Nginx 配置添加一个全新的部分???

/uploads 文件夹在 discourse/shared 中,Nginx 可以访问。我想添加一个新文件夹 /photos……

有没有直接的方法(Discourse 推荐的方法)?

你能解释一下为什么你想这样做吗?

“Photos” 无论如何都可以上传到 Discourse。 Discourse 已经内置了图片上传和优化功能。

也许我举的例子不对……我想弄清楚的是……我该如何访问原始的 nginx 配置并添加一个完整的 section,无论是添加一个新的文件夹映射还是其他任何东西……这是可行的吗?还是不推荐这样做?

我可以安装一个外部的 nginx 服务器,让它将所有链接重定向到 docker nginx,然后我就可以做我想做的事情了……

您可能会发现,在此前的建议中用于编辑配置的类似技术对您来说是有效的:

(摘自此维基帖子的先前版本:Set up Let’s Encrypt with multiple domains / redirects

“这真的很简单,在您的 app.yml 钩子部分添加类似以下内容:

步骤 2 - discourse.conf

除了步骤 1,还需要更改 nginx 以正确地将除 DISCOURSE_HOSTNAME 之外的所有 http 重定向到 https

    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /return 301 https.+/
        to: |
          return 301 https://$host$request_uri;

我们还需要删除 web.ssl.template.yml 添加的额外重写,因为它只强制使用 DISCOURSE_HOSTNAME,而现在我们有其他主机了!

    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /gzip on;[^\\}]+\\}/m
        to: |
          gzip on;
          add_header Strict-Transport-Security 'max-age=31536000'; # 记住此域的证书一年,并自动连接到 HTTPS

是的,我在模板文件中找到了这些说明……
有没有一个附加新部分的说明?而不是查找替换?

你得发挥创造力了,我猜。

你为什么不告诉我们你为什么需要这个额外的文件夹?也许别人也有类似的需求,但假设的解决方案并不是实现它的唯一方法。

1 个赞

我说过这是一个糟糕的例子……我可以处理任何带有不同解决方案的额外文件夹……到目前为止没有问题……
然而,我想在 nginx 配置中添加一个全新的部分……如果我必须这样做,我想知道如何做到……

您能否按照我提出的方式进行模式匹配,匹配项为文件末尾的模式,然后用相同但添加了您更改的模式替换它?

我也是这么想的……\n我一直在想,也许有一个用于新附加部分的魔术字段……为此目的而定义……\n没关系……我想我可以在你的建议下处理好。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.