如何配置让我们在docker镜像中为nginx加密证书?

问题描述 投票:3回答:3

我知道如何configure let's encrypt for nginx。我很难配置让我们用docker镜像中的nginx进行加密。让加密证书在etc/letsencrypt/live文件夹中进行符号链接,我无权查看/etc/letsencrypt/archive中的真实证书文件

有人可以建议出路吗?

ssl encryption nginx docker lets-encrypt
3个回答
3
投票

如果有人遇到这个问题,我已经通过将文件夹安装到docker容器中解决了这个问题。

  • 我已将etc/letsencryptetc/ssl文件夹安装到docker中
  • Docker有-vflag来安装卷。别忘了为容器打开port 443

根据您如何安装它,可以在docker容器中启用https而无需更改nginx路径。

docker run -d -p 80:80 -p 443:443 -v /etc/letsencrypt/:/etc/letsencrypt/ -v /etc /ssl/:/etc/ssl/ <image name>

0
投票

我加错了。也许有人会发现它很有用。

我挂载了letsencrypt的/ live目录,而不是整个letsencrypt目录树。

这个问题: / live文件夹只是将符号链接保存到未使用我的方法挂载到docker容器的/ archive文件夹。 (事实上​​我甚至挂了一个符号链接到live文件夹的/ certs文件夹,因为我在开发环境中有那个certs文件夹,同样的问题......没有挂载真实的(符号链接的)文件)

当我挂载/ etc / letsencrypt而不是/ live时,所有问题都消失了

我的docker-compose.yml的一部分

  services:
    ngx:
      image: nginx
      container_name: ngx
      ports:
        - 80:80
        - 443:443
      links:
        - php-fpm
      volumes:
        - ../../com/website:/var/www/html/website
        - ./nginx.conf:/etc/nginx/nginx.conf
        - ./nginx_conf.d/:/etc/nginx/conf.d/
        - ./nginx_logs/:/var/log/nginx/
        - ../whereever/you/haveit/etc/letsencrypt/:/etc/letsencrypt

该配置中的最后一行是重要的一行。改变它

- ./certs/:/etc/nginx/certs/

和/ certs是/ etc / letsencrypt / live的符号链接。这不能像我上面描述的那样工作。


0
投票

如果您使用的是nginx,Docker和Letsencrypt,您可能会喜欢以下Github项目:https-portal

它可以自动执行大量手动操作,并使用docker-compose轻松管理配置。来自README:

Features

  • 在本地测试
  • 重定向
  • 自动容器发现
  • 使用非Dockerized应用程序进行混合设置
  • 多个域
  • 服务静态网站
  • 与其他应用共享证书
  • HTTP Basic Auth

How it works

  • 从Let's Encrypt获取每个子域的SSL证书。
  • 配置Nginx使用HTTPS(并通过将HTTP重定向到HTTPS强制HTTPS)
  • 设置一个每周检查一次证书的cron作业,并更新它们。如果他们在30天后到期。

对于某些背景..该项目还讨论了黑客新闻:HTTPS-Portal: Automated HTTPS server powered by Nginx, Let’s Encrypt and Docker

(免责声明:我与该项目没有任何关系,只是一个用户)

© www.soinside.com 2019 - 2024. All rights reserved.