繁体   English   中英

jwilder / nginx-proxy:无法将ssl与Nginx集成

[英]jwilder/nginx-proxy: Not able to integrate ssl with Nginx

我们正在努力通过SSL设置多个网站托管和单端口和jwilder / nginx-proxy,我们能够在没有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

请建议问题的可能原因和解决方案。

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_HOST变量匹配。 根据文件

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

所以在花了这么多时间后,我终于能够解决这个问题了。 因此,对于ssl与jwilder / nginx-proxy集成,没有命令将证书命名并键入域名,而不是它可以是任何名称,只需要在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 

然后使用“docker-compose up --build”构建并运行compose,现在恭喜你在安全层上。

暂无
暂无

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

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