前言

在我写完Centos7.4下用Docker-Compose部署WordPress这篇文章后,我的个人博客已经正式的开始运作。但考虑到网站访问的安全性以及今后可能会重复利用服务器来部署其他网站的可能,因此我决定在原有基础上来加上Nginx用作反向代理,并添加SSL 证书使博客运行在HTTPS协议上。

本文中统一使用www.fujiabin.com这个域名,在实际操作中,你应该全部替换成自己的域名。

准备SSL证书

现在有很多免费的DV(Domain Valicated Certificate)证书提供商,比如比较火的Let's encrypt,然而我并没有使用它:)。我用的都是阿里云的服务,所以证书也用了阿里云提供的。以下是用screentogif生成的一个申请阿里云免费DV的动图,如果图没动,请在浏览器中直接打开图片:https://i2.wp.com/www.fujiabin.com/wp-content/uploads/2017/11/aliyun-dv.gif?resize=1024%2C512&ssl=1:

  • 阿里云后台地址:https://home.console.aliyun.com/new#/(需要注册才能访问)。
  • 如果你的域名也是在阿里云上申请的话,域名的验证将会变得特别简单,在补全域名信息的时候,将选项证书绑定的域名在【阿里云的云解析】产品中,授权系统自动添加一条记录以完成域名授权验证。勾上即可,阿里云将自动在你的域名管理中添加一条用以验证的解析记录。
  • CSR你可以选自己生成CSR,或者直接选用系统生成CSR,两个并没有区别,但是如果你觉得系统生成的不够安全,可以自己手动生成。
  • 如果选用的是系统生成CSR选项,在域名审核通过后(因为DV是系统自动审核的,所以也就几分钟时间状态就会变成已签发状态),可以在我的证书菜单中,找到对应的域名,并点击下载按钮下载你的证书和秘钥文件包(里面将包含一个xxx.key的秘钥文件和一个xxx.pem的证书文件)。

配置

添加一个Docker Network

$ docker network create nginx-proxy

手动创建Docker Network,这样就可以将所有yml中的容器连接到这个网络上来互相联通。

docker-compose.yml

这个配置文件是在前一片文章的基础上修改的,只有修改部分我添加了注释,其他部分的说明可参考:Centos7.4下用Docker-Compose部署WordPress中相关部分。

version: '3'

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: xxxx
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wp_site:/var/www/html
expose: # 容器将暴露80端口,80是默认端口,所以这个不写也没问题,如果用其他端口的话,就一定需要写一下
- 80
restart: always
environment:
VIRTUAL_HOST: www.fujiabin.com,fujiabin.com
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress # 以下是nginx反向代理服务的配置
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443" # ssl 默认是443端口,因此需要将443端口映射到宿主机上
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro # 将宿主机的docker.sock绑定到nginx,这样,今后添加新的站点时,nginx将会自动发现站点并重启服务
- wp_certs:/etc/nginx/certs:ro # 将nginx中的证书目录,映射到宿主机中 volumes:
db_data:
wp_site:
wp_certs: # nginx证书命名卷(named volume) # 配置一个公共外部网络来联通所有容器
networks:
default:
external:
name: nginx-proxy

添加ssl证书

还记得刚才在阿里云后台获得的证书文件吗?现在马上要派上用场了。以下命令均在宿主机中执行:

$ docker volume ls

这个命令将在宿主机中查看Docker中所有的卷信息,你会看到一个VOLUME NAMExxx_wp_certs(前缀是Docker自动添加的,后面的wp_certs是yml配置中指定的)的卷。

$ docker volume inspect --format '{{ .Mountpoint }}' xxx_wp_certs

执行这个命令,将打印出xxx_wp_certs(这个卷名应该替换成上一步中获得的真实卷名)这个卷在宿主机中的实际路径,一般可能是:/var/lib/docker/volumes/xxx_wp_certs/_data

$ cd /var/lib/docker/volumes/xxx_wp_certs/_data && sudo vim www.fujiabin.com.key

这个命令相当于在Nginx添加ssl秘钥文件www.fujiabin.com.key,将在阿里云后台下载的文件xxx.key中的内容黏贴进来并保存。

$ cd /var/lib/docker/volumes/xxx_wp_certs/_data && sudo vim www.fujiabin.com.crt

这个命令相当于在Nginx添加ssl秘证书文件www.fujiabin.com.crt,将在阿里云后台下载的文件xxx.pem中的内容黏贴进来并保存。

镜像nginx-proxy中的脚本包含了如下功能:

如果在certs文件夹下找到当前域名的.crt.key文件,则将自动将访问转到HTTPS协议,因此到此为止,我们已经完成了所有需要做的工作,是不是感觉特别简单优雅?

$ sudo docker-compose down

$ sudo docker-compose up -d

重启服务,此时再次访问网站(即使是用http://www.fujiabin.com这个地址),将自动跳转到https://www.fujiabin.com。


本文在博客园和我的个人博客www.fujiabin.com上同步发布。转载请注明来源。


参考文档

Centos7.4下用Docker-Compose部署WordPress(续)-服务器端用Nginx作为反向代理并添加SSL证书(阿里云免费DV证书)的更多相关文章

  1. wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败

    继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...

  2. 同一个服务器部署两个Tomcat并用Nginx实现反向代理

    需求场景:由于服务器只有80端口可供外网访问,但需要部署两台tomcat来运行两个不同的项目,所以选择了nginx做反向代理 一个upstream tomcat_server对应一个  locatio ...

  3. 阿里云上Docker Compose部署wordpress

    先上官方文档: https://docs.docker.com/compose/wordpress/ 我的环境: [root@xyjk1002 ~]# cat /etc/redhat-release ...

  4. Asp.Net Core 使用Docker进行容器化部署(二)使用Nginx进行反向代理

    上一篇介绍了Asp.Net 程序在Docker中的部署,这篇介绍使用Nginx对Docker的实例进行反向代理 一.修改Nginx配置文件 使用winscp链接Liunx服务器,在/ect/nginx ...

  5. 使用Docker Compose 部署Nexus后初次登录账号密码不正确,并且在nexus-data下没有admin,password

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  6. Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点

    Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点 一.安装docker 执行代码如下: curl -sSL https://get.daocloud.io ...

  7. Docker Compose 部署前后端分离应用

    部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...

  8. 在Windows Server 2019通过Docker Compose部署Asp.Net Core

    一.安装Docker Enterprise 安装文档是: https://docs.docker.com/install/windows/docker-ee/ 安装完成后,如下图 二.首先,拉取一个W ...

  9. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

随机推荐

  1. Jenkins 在声明式 pipeline 中并行执行任务

    在持续集成的过程中,并行的执行那些没有依赖关系的任务可以缩短整个执行过程.Jenkins 的 pipeline 功能支持我们用代码来配置持续集成的过程.本文将介绍在 Jenkins 中使用声明式 pi ...

  2. Ionic3学习笔记(一)安装、项目结构与常用命令

    本文为原创文章,转载请标明出处 目录 安装 项目结构 常用命令 1. 安装 安装Cordova.Ionic npm install -g cordova ionic 创建一个新项目,有blank.ta ...

  3. 用C#实现字符串相似度算法(编辑距离算法 Levenshtein Distance)

    在搞验证码识别的时候需要比较字符代码的相似度用到"编辑距离算法",关于原理和C#实现做个记录. 据百度百科介绍: 编辑距离,又称Levenshtein距离(也叫做Edit Dist ...

  4. Two-phase clustering process for outliers detection 文章翻译

    基于二阶段聚集模式的异常探测 M.F .Jiang, S.S. Tseng *, C.M. Su 国立交通大学计算机与信息科学系,中国台北市新竹路100150号 1999年11月17日; 2000年4 ...

  5. linux 守护进程编程

    概述: Daemon运行在后台也称作"后台服务进程". 它是没有控制终端与之相连的进程.它独立于控制终端.通常周期的执行某种任务. 守护进程脱离终端是为了避免进程在执行过程中的信息 ...

  6. 【装逼利器效率软件】一张图问你想不想用Launchy

    简述:Launchy博客园很多文章,长篇大论文字太多. 一张图问你想不想用? 长话多说: 一.设置Launchy扫描目录,安装后会默认,个人推荐自定义目录比较好 二.自行建立快捷方式别名文件夹,存放各 ...

  7. C#实现局域网内远程开机

    1.远程开机原理 远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊 ...

  8. C# To C++ Converter Cracked ( 破解版 )

    C# To C++ Converter v17.10.2 Cracked By X-Cracker 简介 C# To C++ Converter是一款将C#代码或者项目转换为C++的工具 免费版本一次 ...

  9. (转)HTTP1.0和HTTP1.1的区别

    原文出自:http://www.cnblogs.com/gofighting/p/5421890.html 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(P ...

  10. js的事件循环绑定和jQuery的隐式迭代

    js的事件循环绑定和jQuery的隐式迭代 js事件循环绑定 jQuery隐式迭代 先举一个例子:给定一个ul,点击列表内的每一个li元素,使它的背景色变红,下边分别用js代码和jQuery实现. & ...