接上文【实战】手动使用阿里云ECS部署前端页面-docker版
下载证书
下载完之后解压,会获得 xxx.key和xxx.pem的文件
上传证书到服务器
选择喜欢的方式把证书上传到服务器,可以放在/etc/ssl/certs目录里 比较方便的话就是使用workbench,可以在阿里云控制台的服务实例里面点击远程连接
修改部署脚本
因为之前的dockfile把node镜像和nginx镜像都打包了,所以为了后面多个docker服务可以部署。
这里使用的方案是将宿主机的证书目录(如 /etc/ssl/certs)挂载到容器内:
在docker run 后面加上-v /etc/ssl/certs:/etc/ssl/certs:ro和-p 443:443
举例:
docker run -d \
--name project-name \
-p 80:80 \
-p 443:443 \
-v /etc/ssl/certs:/etc/ssl/certs:ro \
--restart unless-stopped \
project-name
修改nginx配置
增加ssl配置
listen 443 ssl http2;
server_name yourdomain.com;
# SSL证书配置
ssl_certificate /etc/ssl/certs/xxx.pem;
ssl_certificate_key /etc/ssl/certs/xxx.key;
# SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
增加http重定向到https
server {
listen 80;
server_name yourdomain.com;
# 重定向所有HTTP请求到HTTPS
return 301 https://$server_name$request_uri;
}
重新部署
部署之后访问就可以访问https连接了