报错信息:
nginx: [emerg] cannot load certificate “/weh/nginx/ssl/itweh.cn_bundle.crt”: BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file ordirectory:fopen(‘/weh/nginx/ssl/itweh.cn_bundle.crt’,‘r’) error:2006D080:BIO routines:BIO_new_file:no such file)
查明原因:可能是docker部署nginx时挂载目录出现了错误;
解决方案:
先启动docker
docker run -d -p 80:80 --name=nginx --privileged=true nginx
进入nginx容器
#进入容器内部
docker exec -it nginx /bin/bash
#进入容器内部后查看nginx的配置SSL文件的要求
cd /etc
#显示文件
ls
#查看ca-certificates.conf
cat ca-certificates.conf
可知证书安装在/etc/ssl/certs目录
然后删除该nginx容器:docker rm -f nginx
将自己的证书部署在/etc/ssl/certs目录:
-v /usr/nginx/ssl:/etc/ssl/certs nginx
重新启动nginx,挂载相应的数据卷
docker run --name my_nginx -d \
-p 80:80 \
-p 443:443 \
-v /usr/nginx/html:/usr/share/nginx/html \
-v /usr/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/nginx/conf.d:/etc/nginx/conf.d \
-v /usr/nginx/logs:/var/log/nginx \
-v /usr/nginx/ssl:/etc/ssl/certs nginx
然后得申请ssl证书:
最后就是nginx.conf中填写pem和key文件映射路径:
server {
#ssl使用443端口
listen 443 ssl;
server_name weh.itweh.cn;#前台域名
‘’‘’‘’‘’‘
‘’‘’‘’‘’’
#证书pem文件:比如腾讯云的是.crt文件
ssl_certificate "/etc/ssl/certs/itweh.cn_bundle.crt";
#证书key文件
ssl_certificate_key "/etc/ssl/certs/itweh.cn.key";
‘’‘’‘’‘’‘
‘’‘’‘’‘’’
}
实现效果
访问网站:显示连接安全