一 背景
如果你有写博客习惯,并且是自己搭建的博客,会面临一个问题,你的图片放哪。其实有很多选择,比如:七牛图床、Github图床等都可以免费使用。但是多少有些问题,比如七牛图床如果你想使用https,很抱歉是需要收费的,如果流量不高,费用其实也很低;再比如Github图床,国内访问不稳定。对于我自己的博客,经过几番尝试之后还是想放在自己的服务器。
有写博客习惯的人,基本都用过一些markdown工具(除非你的博客不是用markdown来编写的),比如我,如果涉及到有图片的markdown编辑,我会选择Typora,因为可以配合PicGo完成图片自动上传转换成markdown图片链接,而PicGo还支持自定义图床,即可以支持把自己的图片上传的自己的服务器并返回事先定义好的图片地址,非常方便。
二 PicGo自定义图床的搭建
先看自定义图床需要哪些配置
从配置可以看到,上传图片的Web图床设置,主要是两个必填。
- API地址:即上传图片的地址
- POST参数名:上传图片post的参数名
非必填的有三个,我们通常会用到以下两个
- JSON路径:是返回body中图片链接url的json路径
- 自定义请求头:主要自定义安全控制、上传途径等请求头,方便随时调整上传的途径。
这次简单的一个上传服务,我们可以直接用golang语言写一个简单web上传即可,先简单定义一下我们的Web图床的一些参数:
- API地址:http://[hostname]:8081
- POST参数名:file
- JSON路径:data.url
- 自定义请求头:{“Authorization”: “Basic 【basic验证的账号密码base64】”, “uri”: “【uri路径如:mafgwo/picgo/】”, “imgHost”: “【图片根http路径如:https://img.qicoder.com/】"}
实现代码如下:
1 | package main |
图片访问是通过nginx访问,nginx的配置如下:
1 | server { |
nginx中使用的https,可以通过acme.sh免费生成ssl。
到此为止,我们的的服务就算是搭建好了。