繁体   English   中英

如何设置 docker nextcloud 以使用 SSL

[英]How to setup docker nextcloud to use SSL

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

但是,当我尝试使用 HTTPS 时,出现 500 内部服务器错误。

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

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

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

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

我个人使用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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM