让我们通过nginx-proxy在Docker容器中encryptionSSL证书

目前我正在使用nginx-proxy将我的子域路由到不同的docker容器。 现在,我想添加一个SSL证书到我的个人云容器,但我没有正确设置它。

我做了什么:

  1. 通过certbot获得证书

我尝试通过执行./certbot-auto certonly获得SAN证书,我已经进入了每个我想要使用的子域。 证书已成功生成到etc/letsencrypt/live/www.mydomain.com

  1. 将证书挂载到owncloud容器并设置nginx-proxy

快速看看我的docker-compose.yml:

 nginx-proxy: image: jwilder/nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock owncloud: image: owncloud expose: - 80 - 443 environment: - "VIRTUAL_HOST=owncloud.mydomain.com,www.owncloud.mydomain.com" - "VIRTUAL_PROTO=https" - "VIRTUAL_PORT=443" volumes: - "owncloud-data:/var/www/html" - "/etc/letsencrypt/live/www.mydomain.com:/root/ssl" 

这里是我的/etc/apache2/sites-available/default-ssl.conf的摘录(当然是从自己云端容器的一个)

 <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /root/ssl/cert.pem SSLCertificateKeyFile /root/ssl/privkey.pem <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </IfModule> 

每当我尝试连接到https://www.owncloud.mydomain.com我得到ERR_CONNECTION_REFUSED错误。

有任何想法吗? 谢谢。

最后,我发现我的docker-compose.yaml不正确。 这是我的新configuration:

 nginx-proxy: image: jwilder/nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/local/nginx/certs:/etc/nginx/certs - /etc/letsencrypt:/etc/letsencrypt - /var/run/docker.sock:/tmp/docker.sock owncloud: image: owncloud expose: - 443 environment: - "VIRTUAL_HOST=owncloud.mydomain.com,www.owncloud.mydomain.com" volumes: - "owncloud-data:/var/www/html" 

我的fullchain.pem和privkey.pem的链接在/ var / local / nginx中