一、准备SSL证书
腾讯云申请
阿里云申请
还有一步DNS验证,因为我这边已经申请了证书,不好演示了。也挺简单的,按照教程来就行了,在域名解析里面加一条DNS解析记录,然后点击验证,通过了,就申请成功了,然后下载nginx版本的证书压缩包,解压上传到服务器就可以了
*稍微需要注意下,腾讯云和阿里云的证书文件后缀有点不一样,腾讯云是xx.crt和xx.key,阿里云是xx.pem和xx.key,都可以正常使用
二、下载最新nginx镜像
docker pull nginx
三、新建几个目录,把nginx容器内的配置文件挂载到主机上
mkdir -p /usr/local/nginx/{conf,html,logs,ssl}
这一步的目的是:1方便后期修改配置文件 2容器删除后配置文件也会删除,相当于多了个备份
四、启动一个nginx临时容器,把配置文件复制过来,然后删除
#启动一个nginx容器
docker run --name nginx -p 80:80 -d nginx
#复制配置文件
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx
#复制完了,可以把这个容器删了,先停止再删除
docker stop nginx
docker rm nginx
这一步是为了获得正确的nginx配置文件格式
五、把SSL证书上传到服务器
#上传到这个目录下面,ssl是我们刚才创建的目录
/usr/local/nginx/ssl
六、修改nginx.conf配置文件,配置SSL证书
server {
listen 80;
#填写绑定证书的域名
server_name _;
#把http的域名请求转成https,相当于用户访问http也可以自动跳转到https,避免出现网页提示不安全
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name _;
#证书文件名称
ssl_certificate_key /etc/nginx/ssl/xx.key;
#私钥文件名称 .crt和.pem都可以用
ssl_certificate /etc/nginx/ssl/xx.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
root /usr/local/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
#首页
location / {
index index.php index.html index.htm;
client_max_body_size 50m;
#limit_rate 100k; 限制下载速度
include fastcgi_params;
#rewrite ^.*$ /index.php$request_uri break;
#ThinkPhp访问异常可以用下面的代码
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
*注意:虽然证书存放位置是/usr/local/nginx/ssl,但是配置里面要写/etc/nginx/ssl而不是/usr/local/nginx/ssl,不然启动会报错,因为配置里面的绝对路径,都是在nginx容器里面的地址,和主机里面的目录地址是两个东西,后面启动目录挂载的时候,是可以读到证书的,不用担心。
七、正式启动nginx
docker run --name nginx -p 80:80 -p 443:443 \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/ \
-v /usr/local/nginx/conf.d:/etc/nginx/conf.d/ \
-v /usr/local/nginx/logs:/var/log/nginx \
-v /usr/local/nginx/ssl:/etc/nginx/ssl \
--privileged=true -d --restart=always nginx
--name nginx //容器名称
-p 80:80 -p 443:443 //将容器的80端口映射到服务器的80端口,将容器的443端口映射到服务器的443端口
-v aa:bb //将主机的aa目录挂载到容器的bb
--privileged=true //使用该参数,container内的root拥有真正的root权限,避免后面操作时提示无权限
--restart=always //能够使我们在重启docker时,自动启动相关容器
八、检查nginx是否成功启动
up运行中
访问服务器,提示这个,就是成功启动了
文章来源:https://www.toymoban.com/news/detail-454378.html
九、访问失败?
#看下nginx日志,有没有报错
docker logs nginx
检查下服务器的80/443端口都打开吗?看下服务器安全组里面开了吗?还有问题可以评论留言
文章来源地址https://www.toymoban.com/news/detail-454378.html
到了这里,关于docker安装nginx并配置ssl证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!