【问题标题】:How to setup docker nextcloud to use SSL如何设置 docker nextcloud 以使用 SSL
【发布时间】:2021-10-08 00:09:00
【问题描述】:

我已成功安装并在 docker 中运行 Nextcloud。安装使用 LetsEncrypt 生成证书,当我使用 HTTP 访问它时运行没有问题。

但是,当我尝试使用 HTTPS 时,我收到 500 Internal Server Error。

研究这个问题,我了解到默认情况下nginx代理容器实际上并没有配置为使用HTTPS(基于我在网上阅读的各种nextcloud描述)。显然必须做的是将其配置为能够使用 SSL。

问题是,没有给出执行此操作的分步程序。

几乎在我所见的任何地方,我都能找到很多教程和说明,包括“设置letsencrypt”或“使用certbot或其他方法放置证书。这很好,但我使用的docker-compose.yml文件已经设置好了证书!我需要一些关于如何配置 nginx-proxy 以使用 SSL 的明确说明。我一直找不到这样的说明。

谁能告诉我如何正确配置 nginx-proxy 容器以使用 SSL?或者如果失败了,有人可以指出一些明确的说明,以便为 SSL 正确配置它吗?

【问题讨论】:

    标签: docker ssl nextcloud


    【解决方案1】:

    我个人使用 https://github.com/nginx-proxy/nginx-proxy 容器来做到这一点。

    这是我用来启动反向代理容器的命令:

    docker run --detach \
      --name reverse-proxy \
      --net network-proxy \
      --publish 80:80 --publish 443:443 \
      --volume <CERT_FOLDER_ON_HOST>:/etc/nginx/certs:ro \
      --volume /var/run/docker.sock:/tmp/docker.sock:ro \
      nginxproxy/nginx-proxy
    

    下面的行将容器设置在与其他容器相同的网络中。

      --net network-proxy \
    

    下面这行告诉代理它可以在哪里找到您的域的证书。

      --volume <CERT_FOLDER_ON_HOST>:/etc/nginx/certs:ro \
    

    您必须将证书放在该文件夹中,才能生成可以使用https://certbot.eff.org/ 的证书。证书必须这样命名:example.com.key 用于私钥,example.com.crt 用于证书。

    如果您需要帮助:https://github.com/nginx-proxy/nginx-proxyhttps://certbot.eff.org/

    下面的行允许容器之间的通信,以便代理能够重定向请求。

      --volume /var/run/docker.sock:/tmp/docker.sock:ro \
    

    之后,您必须在其他容器中设置 VIRTUAL_HOST 环境变量,以将其他容器的域名告诉反向代理。

    一个网络服务器容器的例子:

    docker run --detach \
      --name webserver \
      --net network-proxy \
      --env 'VIRTUAL_HOST=<DOMAIN_NAME>' \
      --volume <WEBSITE_FOLDER_ON_HOST>:/usr/share/nginx/html:ro \
      nginx
    

    【讨论】:

      【解决方案2】:

      虽然上面给出的答案是 Alexandre 是一个很好的答案(我给了它一个努力的分数并且它确实有效),但我最终通过编写自己的反向代理服务器解决了我的问题。该服务器专为 Nextcloud 设计,在 Docker 容器中运行良好。它需要很少的配置,并且比 nginx 代理更容易设置和使用。它与 SSL 配合使用,并在 Nextclud 中充当良好的安全层。

      使用各种框架很容易制作反向代理。一旦我决定走那条路,不到三个小时就为 Nextcloud 制作了这条路。

      如果有兴趣,我很乐意分享代码和容器。

      【讨论】:

        猜你喜欢
        • 2021-04-22
        • 2020-05-31
        • 2022-10-09
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-09
        • 2020-06-07
        相关资源
        最近更新 更多