本篇文章是教大家如何在docker部署的nginx上通过acme.sh安装ssl/https 证书。
由于文中例子是通过acme.sh的http验证方式生成证书,所以在此之前,必须保证你的网站能通过http访问。
目录&流程
[toc]
1.服务器环境介绍
首先介绍我当前的服务器环境。
1) 阿里云ecs,系统:centos 7
2) 使用docker-compose 配置的php+mysql+nginx环境,nginx直接拉取官方最新版本。
其中nginx容器向外映射
端口:80(http)、443(https)
路径:- /home/www:/var/www/html (项目文件路径)
- /home/docker/lnmp/nginx/conf:/etc/nginx/conf.d (配置文件)
- /home/docker/lnmp/nginx/ssl:/etc/nginx/ssl。(存放ssl证书路径)
- /home/docker/lnmp/nginx/log:/var/log/nginx。 (日志路径)
3) 域名:nuomiphp.com,http能正常访问。
以上配置只是作为参考,原理都一样,请大家因地制宜,不一定要跟我的配置相同。
2.准备工作
2.1 开通阿里云端口
默认情况下,阿里云服务器的80(http)、443(https)端口是关闭。需要在安全组和系统防火墙开启。
具体可参考文章
2.2 映射容器端口
将本地 80、3306 端口映射到nginx容器内部的 80、3306端口
2.3 挂载容器目录 (选配)
将主机中项目的目录ssl挂载nginx容器的/etc/nginx/ssl,用于存放ssl证书。如:- /home/docker/lnmp/nginx/ssl:/etc/nginx/ssl。(存放ssl证书路径)
- /home/docker/lnmp/nginx/log:/var/log/nginx。 (日志路径,方便调试)
2.4 配置顶级域名的解析
由于acme.sh的http认证过程,需要访问配置域名的顶级域名。如www.nuomiphp.com 会访问nuomiphp.com这个顶级域名。所以需要在阿里云设置顶级域名的解析。如图:
3.使用acme.sh生成证书
acme.sh有http 和