docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker nginx ssl

docker安装nginx并配置ssl证书的方法步骤

作者:落华X

本文主要介绍了docker安装nginx并配置ssl证书的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、准备SSL证书

腾讯云申请

阿里云申请

还有一步DNS验证,因为我这边已经申请了证书,不好演示了。也挺简单的,按照教程来就行了,在域名解析里面加一条DNS解析记录,然后点击验证,通过了,就申请成功了,然后下载nginx版本的证书压缩包,解压上传到服务器就可以了

*稍微需要注意下,腾讯云和阿里云的证书文件后缀有点不一样,腾讯云是xx.crt和xx.key,阿里云是xx.pem和xx.key,都可以正常使用

二、下载最新nginx镜像

docker pull nginx

三、新建几个目录,把nginx容器内的配置文件挂载到主机上

mkdir -p /usr/local/nginx/{<!--{C}%3C!%2D%2D%20%2D%2D%3E-->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运行中

访问服务器,提示这个,就是成功启动了

九、访问失败?

#看下nginx日志,有没有报错
docker logs nginx

检查下服务器的80/443端口都打开吗?看下服务器安全组里面开了吗?

到此这篇关于docker安装nginx并配置ssl证书的方法步骤的文章就介绍到这了,更多相关docker nginx ssl内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文