要求:替换ssl证书,并修改nginx容器配置文件恢复https访问
环境:centos7
准备好ssl两个证书 .pem .key和新更换的域名
1、首先停止nginx容器:
docker stop CONTAINER ID
2、查找nginx配置文件位置
#find / -name nginx.conf
[root@iZ2zed3d8a5mhcgtdi6z1qZ conf.d]# find / -name nginx.conf
/home/llvision/arise_1.6.1_prod_20200407/arise_1.6_prod_nginx/nginx.conf
/var/lib/docker/overlay2/f78cad3e3a56a4f26de5d9a5f7dbc02d86aaf00600e6bd3d438a0ded18af4d18/diff/etc/nginx/nginx.conf
/var/lib/docker/overlay2/c5192fdee7e4b6c5b40c5ec898bc714c9850ec3ee85cc7565b4585d385b9463e/merged/etc/nginx/nginx.conf
3、替换ssl证书更换域名:
#发现nginx配置文件是以挂载方式启动的,但是vim打开/home下的nginx.conf是发现是引用了上级目录/conf.d下的default.conf配置文件,并且根据配置文件直接替换掉同级目录/ssl下的证书,替换前要备份,同样修改nginx的配置文件default.conf也要先备份:
[root@iZ2zed3d8a5mhcgtdi6z1qZ conf.d]# cd /home/llvision/arise_1.6.1_prod_20200407/arise_1.6_prod_nginx
[root@iZ2zed3d8a5mhcgtdi6z1qZ arise_1.6_prod_nginx]# ll
total 20
drwxr-xr-x 2 llvision llvision 4096 Oct 28 11:28 conf.d
drwxr-xr-x 3 llvision llvision 4096 Jun 4 12:14 html
-rw-r--r-- 1 llvision llvision 644 May 22 12:10 nginx.conf
-rw-r--r-- 1 llvision llvision 530 Jun 4 16:14 run-arise_1.6_prod_nginx.sh
drwxr-xr-x 2 llvision llvision 4096 Oct 28 11:25 ssl
[root@iZ2zed3d8a5mhcgtdi6z1qZ arise_1.6_prod_nginx]# ll conf.d/
total 52
-rw-r--r-- 1 llvision llvision 10611 Oct 28 11:35 default.conf
-rw-r--r-- 1 root root 10566 Oct 28 11:26 default.conf.1028bak
-rw-r--r-- 1 llvision llvision 25544 Jun 3 11:36 msp.conf_bak
[root@iZ2zed3d8a5mhcgtdi6z1qZ arise_1.6_prod_nginx]# ll ssl/
total 16
-rw-r--r-- 1 root root 1675 Sep 24 13:46 4544537__gongjiangcloud.cn.key
-rw-r--r-- 1 root root 4086 Sep 24 13:46 4544537__gongjiangcloud.cn.pem
-rw-r--r-- 1 root root 1675 Oct 28 11:24 privkey.key.1028bak
-rw-r--r-- 1 root root 4078 Oct 28 11:24 public.pem.1028bak
[root@iZ2zed3d8a5mhcgtdi6z1qZ arise_1.6_prod_nginx]#
#修改内容如下:
[root@iZ2zed3d8a5mhcgtdi6z1qZ arise_1.6_prod_nginx]# cat conf.d/default.conf
server {
listen 80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /ssl/4544537__gongjiangcloud.cn.pem; #pem证书替换
ssl_certificate_key /ssl/4544537__gongjiangcloud.cn.key; #key证书替换
server_name https://xiezuo.gongjiangcloud.cn; #域名更换
# http 转 https
if ($scheme != "https"){
return 301 https://$host$request_uri;
}
4、最后重启nginx容器:
docker restart CONTAINER ID
总结:
还有一种方式是直接进入容器更换:docker exec -it CONTAINER ID bash,但是提示没有vi等命令需要使用apt-get update再安装,具体安装步骤如下:
apt-get update
apt-get install vim -y
#这里有个疑点就是在容器中使用的安装命令就是apt-get 不管是什么版本的操作系统。
推荐初次挂载方式启动:
挂载配置文件,就是把装有docker宿主机上面的nginx.conf配置文件映射到启动的nginx容器里面,这需要你首先准备好nginx.con配置文件,如果你应经准备好了,下一步是启动nginx
命令:docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
参数解释:
--name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定
-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
-d 表示启动的是哪个镜像