jwilder / nginx-proxy:无法将ssl与Nginx整合

我们正在设置多个网站托pipe与单一端口和jwilder / nginx代理通过SSL,我们能够部署解决scheme没有ssl和它的工作正常,但是当我们试图把它与SSL失败的HTTPs呼叫。 我们的docker-compose文件如下:

泊坞窗,compose.yml

site1: build: site1 environment: VIRTUAL_HOST: site1.domainlocal.com VIRTUAL_PROTO: https restart: always site2: build: site2 environment: VIRTUAL_HOST: site2.domainlocal.com VIRTUAL_PROTO: https restart: always site3: build: site3 environment: VIRTUAL_HOST: site3.domainlocal.com VIRTUAL_PROTO: https restart: always nginx-proxy: image: jwilder/nginx-proxy:alpine ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - certs:/etc/nginx/certs:ro restart: always privileged: true 

PS:“certs”文件夹保存在与docker-compose文件相同的文件夹中。

使用openssl使用自签名证书

文件夹结构是这样的:

 Main_folder-| |- docker-compose.yml | |- certs/.csr and .key files | |- site1/Dockerfile + Nodejs |- site2/Dockerfile + Nodejs |- site3/Dockerfile + Nodejs 

请提出相同的问题和解决scheme的可能原因。

docker的输出ps:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c71b52c3e6bd compose_site3 "/bin/sh -c 'node ..." 3 days ago Up 3 days 80/tcp compose_site3_1 41ffb9ec3983 jwilder/nginx-proxy "/app/docker-entry..." 3 days ago Up 3 days 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp compose_nginx-proxy_1 a154257c62ec compose_site1 "/bin/sh -c 'node ..." 3 days ago Up 3 days 80/tcp compose_site1_1 3ed556e9287e compose_site2 "/bin/sh -c 'node ..." 3 days ago Up 3 days 80/tcp compose_site2_1 

您的证书应以“.crt”扩展名结尾,而不是“.csr”。 还要确保它的名称与VIRTUAL_HOSTvariables相匹配。 根据文件 :

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

所以花了这么多时间后,终于可以解决这个问题了。 所以对于与jwilder / nginx-proxy的ssl集成来说,没有命令来命名域名中的证书和密钥,而只需要在docker-compose文件中提及证书名称就可以是任何名称(我发现这种方法通过刚打和审判)。 所以你的docker撰写文件应该是这样的:

 site1: build: site1 environment: VIRTUAL_HOST: site1.domainlocal.com CERT_NAME: mycertificate volumes: - /etc/ssl/certs:/etc/ssl/certs:ro restart: always site2: build: site2 environment: VIRTUAL_HOST: site2.domainlocal.com CERT_NAME: mycertificate volumes: - /etc/ssl/certs:/etc/ssl/certs:ro restart: always site3: build: site3 environment: VIRTUAL_HOST: site3.domainlocal.com CERT_NAME: mycertificate volumes: - /etc/ssl/certs:/etc/ssl/certs:ro restart: always nginx-proxy: image: jwilder/nginx-proxy:alpine ports: - "80:80" - "443:443" environment: DEFAULT_HOST: domainlocal.com #default host CERT_NAME: mycertificate # Wildcard Certificate name without extension volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - /etc/ssl/certs:/etc/nginx/certs #certificate path in docker container restart: always privileged: true