在docker中用ssl运行nginx-proxy

我有一个问题在docker中运行jwilder / nginx-proxy和ssl。

我的情况如下:目前我有3个网页托pipe在同一个容器(Apache虚拟主机)。 其中只有一个使用SSL,其余的可通过http访问。

在我的第一个testing(没有SSL)的代理工作刚刚开箱。 但我有问题转发ssl到那个虚拟主机。 这甚至是可能的,或者我必须将https和非https页面分隔到不同的容器中? (在当前项目阶段不需要)

每当我想通过ssl连接,我在我的浏览器中“无法连接”,而非httpsstream量的作品。 我也不知道在哪里把letsencrypt证书的,因为项目github页面提到:

证书和密钥应以具有.crt和.key扩展名的虚拟主机命名。 例如,VIRTUAL_HOST = foo.bar.com的容器应该在certs目录中有一个foo.bar.com.crt和foo.bar.com.key文件。

但所有的文件都是* .pem所以这是必需的,如何将代理区别它们?

我读了关于env var HTTPS_METHOD = noredirect这是我将需要我想。 我不是关于SSL的专家,但我真的很感谢一些帮助。

这是我目前的docker组成:

version: "2" services: proxy: image: jwilder/nginx-proxy:0.4.0 ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro web: build: context: ./web volumes: - /var/www/html:/var/www/html - /etc/letsencrypt/live/example.com/cert.pem:/etc/letsencrypt/live/example.com/cert.pem:ro - /etc/letsencrypt/live/example.com/privkey.pem:/etc/letsencrypt/live/example.com/privkey.pem:ro - /etc/letsencrypt/live/example.com/chain.pem:/etc/letsencrypt/live/example.com/chain.pem:ro expose: - "80" - "443" environment: - "VIRTUAL_HOST=www.example.com,example.com,www.example2.com,www.example3.com - HTTPS_METHOD=noredirect #- "VIRTUAL_PORT=443" #- "VIRTUAL_PROTO=https" restart: always 

我是否正确的SSL证书需要进入代理而不是Apache容器? 我将不得不重新命名为example.com.pem? 但是,代理怎么知道哪个是私钥,哪个是公钥?

另外我的评论选项去哪里? 我在这里有点迷路了