docker里部署https

302 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

首先,申请免费证书,这个就不说了。

然后,将你要申请的域名,在云解析里,弄一个记录类型A

image.png

然后,才继续

Nginx安装 下载nginx1.10的docker镜像:

docker pull nginx:1.10 从容器中拷贝nginx配置 先运行一次容器(为了拷贝配置文件):

docker run -p 80:80 --name nginx
-v /mydata/nginx/html:/usr/share/nginx/html
-v /mydata/nginx/logs:/var/log/nginx
-d nginx:1.10 将容器内的配置文件拷贝到指定目录:

docker container cp nginx:/etc/nginx /mydata/nginx/ 修改文件名称:

mv nginx conf 终止并删除容器:

docker stop nginx docker rm nginx 使用docker命令启动:记得加上443(10个小时的折磨)

docker run -p 80:80 --name nginx -p 443:443 -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log/nginx -v /mydata/nginx/conf:/etc/nginx -d nginx:1.10 然后搞配置

ip要写服务器的ip

docker stop nginx 停止

docker rm nginx 移除

docker run -p 80:80 --name nginx -p 443:443 -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log/nginx -v /mydata/nginx/conf:/etc/nginx -d nginx

打开/mydata/nginx/conf/conf.d 里面的 default.conf文件

如果配置http就是上面就是第一段

如果是https就是第二段,将配置文件放在 和nginx.conf 这个文件同一级的cert文件下(没有自己创建一个文件夹)

server { listen 80; server_name www.cloudtiger.top; location / { proxy_set_header Host httphost;proxysetheaderXRealIPhttp_host; proxy_set_header X-Real-IP remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://112.74.36.41:8888; } }

server { listen 80; listen 443 ; server_name blog.cloudtiger.top;

       ssl on;    
   root html;
   index index.html index.htm;

    #为虚拟主机指定pem格式的证书文件
    ssl_certificate      cert/cloudtiger.top.pem;
    #为虚拟主机指定私钥文件
    ssl_certificate_key  cert/cloudtiger.top.key;

    #ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;
    #指定使用的ssl协议

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers  on;
    location / {
        proxy_pass   http://112.74.36.41:8888;
    index index.html index.htm;
    }
}

添加完配置文件后,重启nginx容器,并检查下日志看是否有error。

docker restart nginx docker logs nginx