为博客站点建图片服务器
Contents
一些小问题
在写这篇文章之前,博客上托管的图片都是通过github
进行源文件托管的(主要还是为了免费白嫖)。世界上所有的东西都有其明确的标价,免费的总会有其代价,对于图片托管来说最痛就是一下两个问题:1. 国内访问github服务慢,甚至无法访问;2. 图片只能在上传之前做预处理,无法动态调整尺寸、质量和类型。
正好家里有个NAS,也不缺这一点存储空间,就打算以后将图片都托管到自己的NAS上了。
架构设计
- 图一:是上传到github的图片(需要上传时调整图片大小和格式)
- 图二:是上传到自建的图片服务
网络架构
众所周知,国内的家庭宽带一般不给用户分配公网IP,所以真实用户无法通过解析我家庭地址的IP访问NAS上的图片,这个时候就需要有一个反向代理的服务,以及一台运行在公网的服务器
user -> 服务器(Nginx) -> 服务器(Frps) -> HomeNetWork(Frpc) -> PicsServer
通过Frpc和Frps的配合,将内网PicsServer的服务端口暴露在有公网端口的服务器中,并通过Nginx代理对外提供服务
PicsServer
PicsServer主要能力分为:图片管理
+ 图片分发
图片管理负责提供图片上传能力和已上传图片的查找能力,实现原理比较简单就不展开了。
图片分发负责通过解析获取图片请求上携带的参数:宽、高、图片质量、图片类型等,对原图进行动态的处理并返回处理后的图片,当然这个过程也是有缓存的机制,已确保相同的请求参数在一定的时间内无需动态处理第二次。