目前我正在使用 nginx-proxy 将我的子域路由到不同的 docker 容器。现在,我想将 SSL 证书添加到我的 Owncloud 容器,但我无法正确设置它。
我做了什么:
- 通过 certbot 获取证书
我尝试通过执行获取 SAN 证书,./certbot-auto certonly
其中我输入了我想要使用的每个子域。证书已成功生成到etc/letsencrypt/live/www.mydomain.com
- 将证书挂载到 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
(当然是来自 owncloud 容器的摘录)
<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
错误。
有什么想法吗?谢谢。
答案1
最后我发现我的docker-compose.yaml不正确。这是我的新配置:
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 中