最优化使用阿里OSS云存储

  上一篇文章讲到了为何要迁移到阿里OSS,经过几天时间的实际验证,发现还是踩了不少的坑,这里记录下,供参考。

  首先有几个先决条件如下:

  1. 全站所有请求必须HTTPS
  2. 全站仅允许出现自有二级域名
  3. 上行和下行流量均不经过ECS服务器

  (代码洁癖 8)

  阿里OSS我们可以简单的认为分两个部分:

一是存储有关的,提供了两个访问域名:一个是公网,一个内网

<bucket>.oss-cn-shenzhen.aliyuncs.com (A域名)
<bucket>.oss-cn-shenzhen-internal.aliyuncs.com (B域名)

二是为图像处理(缩图,转码)有关的,也提供了一个访问域名:

<bucket>.img-cn-shenzhen.aliyuncs.com (C域名)

我们在这个图像处理的功能上面绑定了一个自有的二级域名:

image.snapast.com (D域名)

默认分配并指向了下面的CDN加速节点域名:

image.snapast.com.w.kunlunca.com (E域名)

  暂且称为A~E域名,注意其中细微差别。其中A和B域名本身是支持HTTPS的,但C不行,在绑定了D之后,可以上传SSL证书开启。A域名也可以绑定自有域名,但不支持HTTPS。图像处理设置了禁止原图访问,也就是C,D域名仅允许通过“样式”访问到缩略图。但A,B不受限制,本来就不同的系统。

于是第一个方案是这样的:

用户上传:HTTPS POST A域名
用户访问:HTTPS GET D域名

  初看没啥问题,除了引入一个第三方域名,不符合预定规范,但也运行良好,但有个很严重的问题,会泄漏原图,将D域名的路径拼接到A上面就能拿到原图。故pass掉,和客服聊了后给了个鸡贼的方案:

方案二:

用户上传:HTTPS POST upload.snapast.com -> proxy_pass -> B域名
用户访问:HTTPS GET D域名

  在nginx上将用户上行的POST请求转发到B域名,这样可以在nginx层面拦截原图访问,并可以支持自有域名HTTPS。虽然又点不符合规范了,虽然ECS下行带宽还是蛮大的,proxy_pass也是内网地址,似乎也无大碍。

方案三:
将bucket设置为私有,这样POST不变,GET需要增加signature,想想就复杂,搞的URL又长又丑,没再尝试。

  后来想想,能不能直接POST到D域名试试,居然成功了。Object 管理中证实了文件是传成功的,但感觉怪怪的,原来CDN还能upload。官方文档似乎也没有说这样用合不合理,暂且先如此把。

风光摄影的一些tips

  风光摄影里面离不开超广角,滤镜,长爆这些,但比这还要重要的是体力。上周迁移完了相册,去了一趟背仔角,南山区过去光坐车就消耗了2个小时。穿过华侨公墓径直走到海边,放下包裹,组装好脚架,滤镜支架,结果发现没带快门线,临时用iPhone来控制。站站蹲蹲几个小时,海边那些风化的石头也不太好坐,累的够呛。

  1. 优先选择原厂的有线快门,不为啥,稳定。之前拍夜景准备了JJC的无线快门,时不时的触发失败
  2. 构图稍低一点,利用广角畸变带来冲击力
  3. 准备好镜头纸,随时擦拭意外沾上的小水珠,几率很高哦
  4. 上ND镜后使用实时取景会非常耗电,预览噪点非常严重,自动提升ISO导致,所以多备电池吧
  5. 接上一条,CMOS过热严重,画面暗部涂抹感,彩噪严重,所以多关机休息
  6. 关闭防抖,自动对焦
  7. 准备小板凳,重要!!

 接下来就是好好享受吧~~

深圳盐田背仔角