Arv*_*ngh 6 ssl proxy docker jwilder-nginx-proxy
我们正在努力通过 SSL 设置使用单端口和 jwilder/nginx-proxy 的多个网站托管,我们能够在没有 ssl 的情况下部署该解决方案,并且它工作正常,但当我们尝试使用 SSL 时,它在 HTTPs 调用上失败。我们的 docker-compose 文件如下:
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
Run Code Online (Sandbox Code Playgroud)
PS:“certs”文件夹与 docker-compose 文件保存在同一文件夹中。
使用 openssl 使用自签名证书
文件夹结构如下:
Main_folder-|
|- docker-compose.yml
|
|- certs/.csr and .key files
|
|- site1/Dockerfile + Nodejs
|- site2/Dockerfile + Nodejs
|- site3/Dockerfile + Nodejs
Run Code Online (Sandbox Code Playgroud)
请建议问题的可能原因和解决方案。
docker ps 的输出:
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
Run Code Online (Sandbox Code Playgroud)
因此,在花了这么多时间之后,我终于能够解决这个问题。因此,对于与 jwilder/nginx-proxy 的 ssl 集成,没有强制要求以域名命名证书和密钥,而是可以是任何名称,只需在 docker-compose 文件中提及证书名称即可(我发现了这种方法)通过只是打击和审判)。所以你的 docker compose 文件应该如下所示:
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: trueRun Code Online (Sandbox Code Playgroud)
只需使用“docker-compose up --build”构建并运行组合即可,恭喜您现在位于安全层上。
| 归档时间: |
|
| 查看次数: |
9061 次 |
| 最近记录: |