簡體   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