眨眼来巴黎已经一周了,这一周的节奏非常地高,早上10点开始与客户开始开会,一直持续到下午7点左右,然后开始刷新文档,直到晚上9点左右。
巴黎的夜黑的很晚,晚上9点天还大亮,给人一种还早的错觉。
毫无疑问的,周末直接加了2天班,万恶的资本主义还不允许去办公室加班,因此,只能窝在酒店糟糕的网络条件下加班奋斗。
Anyway,巴黎该玩的地方上次来巴黎已经都玩过了,没有太多新的兴趣。
话回正题,周日抽空还部署了一下兰空图床,主要用作博客和Memos的图床。接下来记录一下部署及配置CDN的过程。
1. 信息收集
类别 | URL |
---|---|
CDN加速域名 | https://img.timepoet.com:443 |
源站域名 | https://p.timepoet.com:1443 |
2. 使用Docker Compose部署兰空图床容器
services:
lsky-pro:
image: dko0/lsky-pro:latest
container_name: lsky-pro-1
restart: unless-stopped
ports:
- "8980:80"
volumes:
- /volume1/docker/lsky4zhc/data:/var/www/html
environment:
- MYSQL_HOST={数据库IP}
- MYSQL_PORT={数据库监听端口}
- MYSQL_DATABASE={数据库名}
- MYSQL_USER={数据库用户名}
- MYSQL_PASSWORD={MySQL数据库密码}
- TZ=Asia/Shanghai
说明:
- 映射到宿主机
8980
端口; - 挂载图床图片保存目录到
/volume1/docker/lsky4zhc/data
; - 图床应用使用群晖服务器上MariaDB套件的数据库;
3. 更新防火墙策略允许兰空访问MariaDB数据库
上述步骤部署的兰空图床容器,会自动创建一个bridge网络:
记下这个网段172.22.0.0/16
,在群晖服务器防火墙中增加允许访问网段访问MariaDB监听端口的策略:
同时,增加允许WAF
访问映射的8980
端口的策略:
4. 构建兰空图床容器项目
重新构建兰空图床容器项目,此时容器应用将能够访问数据库。
5. WAF上创建代理站点
接下来在WAF
应用上创建代理站点,以代理http
的兰空图床应用。
首先需要申请外部CDN加速域名的证书并且上传到WAF
证书管理模块。
然后创建代理问站点,注意如下配置:
配置项 | 配置 |
---|---|
应用域名 | img.timepoet.com |
监听端口 | 1443/HTTPS |
接入方式 | 代理到已有应用 |
上游服务器 | http://{兰空容器应用所在宿主机IP}:8980 |
注意应用域名
直接配置加速域名,并且保证CDN的回源配置中源站IP和端口能转发到WAF
应用即可。
6. WAF配置
WAF
上注意开启如下配置项:
7. 配置CDN加速
本次使用阿里云普通CDN。
因为家里是有公网IP的,通过DDNS解析域名p.timepoet.com
到公网IP,公网IP在宽带入口路由器上,路由器将转发1443
端口流量至WAF
主机的内网IP上。
因此,数据流为:
- Internet –> CDN加速域名
https://img.timepoet.com:443/
; https://img.timepoet.com/
通过CNAME至源站https://p.timepoet.com:1443
,即流量转发至家里公网IP的路由器;- 路由器将
1443
端口流量通过NAT配置转发至WAF
主机; WAF
应用匹配目标站点为https://img.timepoet.com:1443
;WAF
应用转发流量至后端上游站点http://{兰空容器应用所在宿主机IP}:8980
;
7.1. 源站配置
如图,源站配置的p.timepoet.com
,其作用是通过DDNS能寻址到家里公网IP;
7.2. 回源HOST配置
回源HOST类型配置为加速域名
,这样后端的WAF
才不会因为HOST与WAF
配置的代理站点域名不一致而报站点不存在。
7.3. 回源协议配置
需要配置源站的HTTPS端口为正确的端口。
7.4. HTTPS配置
接下来需要配置HTTPS协议的证书、HTTP协议版本。
同时,为了安全起见,最好把TLSv1.0
和TLSv1.1
这两个不安全协议关闭。同时,开启HSTS。
8. 配置CDN加速域名CNAME
最后,将CDN加速域名通过CNAME指向CDN服务的域名记录,稍等片刻,就可以通过CDN加速域名访问兰空图床啦。