正确使用AWS S3的方式之打造自己的https图床「建议收藏」

正确使用AWS S3的方式之打造自己的https图床

大家好,又见面了,我是全栈君。

写过博客的人都知道图床,一个托管自己博客图片的地方,当然托管到自己的服务器另当别论。常见的图床可以是新浪博客,七牛云,imgur等,但是都是有各种问题,比如我之前使用的是七牛云(也曾在《给Github自定义域名加上HTTPS》博文上推荐使用),用起来相当不错,只可惜后来备案信息过期了,导致无法再使用自定义域名,更可悲的是,https不再支持,意味着尽管我的博客是https但由于有内容是http的,只能被浏览器认为是mixed-content的。

但是,前几天无意发现一片新大陆,使用aws s3结合cloudfront distribution 可以借助亚马逊云无缝快速托管自己的图片还自带https,而费用几乎是很小的,按量收费。

步骤概述

(如果不需要有自定义图片的域名,第三步可选)

  1. 创建一个图片s3 bucket并公开。

  2. 创建cloudfront distribution并绑定S3 bucket和默认证书以支持https

  3. 在DNS服务商(我的是cloudflare)创建图床域名,并绑定cloudfront域名地址

全球亚马逊 Or 亚马逊中国?

两者区别好像挺大的,后者曾经注册过,但是不知为什么没通过审核,可能需要公司邮箱吧。并且,如果考虑到备案等因素,建议使用全球亚马逊。(需要绑定VISA信用卡)
全球亚马逊地址是:https://console.aws.amazon.com/console/home

创建S3 Bucket(存储桶)

账号创建成功后,进入S3控制台https://s3.console.aws.amazon.com,存储桶名称以待托管域名命名,比如我的是 images.troyyang.com,其他项首先都选择默认,待会再一项一项改

正确使用AWS S3的方式之打造自己的https图床「建议收藏」

访问权限设置

在存储桶的权限页面,选择存储桶策略,键入下面的值:

1
2
3
4
5
6
7
8
9
10
11
12
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::images.troyyang.com/*"
        }
    ]
}

正确使用AWS S3的方式之打造自己的https图床「建议收藏」

静态托管

存储桶创建成功后,进入属性页面,选择静态网站托管,键入索引文件index.html,错误文档error.html,然后保存。此时,公共访问页面已经生成,终端节点如下:
http://images.troyyang.com.s3-website-ap-northeast-1.amazonaws.com

正确使用AWS S3的方式之打造自己的https图床「建议收藏」

上传自己的所有图片在此存储桶下,然后加上文件后缀就应该可以访问了,然而现实是残酷的,在我大天朝下,这个地址有时候是无法访问当的 。。。WTF。。。于是,得进行下面的自定义域名步骤

CloudFront Distribution

上面地址是AWS自动生成的访问域名,并且只支持http,想要支持https,并且绑定自定义域名(images.troyyang.com),需要使用到CloudFront Distribution。

CloudFront Distribution 是AWS的内容分发(CDN)使得全球各地都能以最快的速度访问到AWS最近的节点(对于中国,最近的是东京,经测,也已经足够快),并且可绑定或者生产SSL证书。

创建 Distribution

打开 https://console.aws.amazon.com/cloudfront/home, 选择Create Distribution, 传输方式选择Web选项 Get Started,在很多选项中,主要注意几项就好了(都是可后期修改):

  • Origin Domain Name中选择刚才所建的S3 Bucket 域名

  • Alternate Domain Names(CNAMEs)填写自定义域名(没有的话,可不管), 这里是 images.troyyang.com

  • SSL Certificate 暂时选默认Default CloudFront Certificate (*.cloudfront.net)

  • Price Class 可以只选择Use Only US, Canada, Europe and Asia正确使用AWS S3的方式之打造自己的https图床「建议收藏」

  • 一切配置好后,静静等待几个小时就会看到Distribution部署成功,大致结果如下:

  • 正确使用AWS S3的方式之打造自己的https图床「建议收藏」

  • 此时,得到Distribution 的新访问地址 d2dxo9yo9kwqp2.cloudfront.net,这个时候,我们找一张在S3中存在的图片,加上https再次访问 https://d2dxo9yo9kwqp2.cloudfront.net/2017-5-21-https.png 一切OK

自定义证书(可选)

上面的证书是亚马逊自己提供,如果想要使用绑定自己的域名证书,可以使用AWS的Certificate Manager 证书服务,在自己的DNS服务商比如万网或者阿里云那里配置好验证方式,具体操作方法参考 https://docs.aws.amazon.com/zh_cn/acm/latest/userguide/gs-acm-request.html 。因为我暂时觉得没必要,所以没使用上。

绑定自定义域名(可选)

上面的是cloudfront分发的一个地址,虽然地址是固定的,但毕竟不是自家的域名,感觉不高大上,所以需要绑定上自己的图片域名。

由于我的DNS服务解析改为了Cloudflare,所以是以Cloudflare的来配置的域名,但和万网或者阿里云的配置完全一致,在DNS解析项中添加一条CNAME记录,指向Cloudfront分配的域名即可

正确使用AWS S3的方式之打造自己的https图床「建议收藏」

等待绑定解析成功后,访问 https://images.troyyang.com/2017-5-21-https.png ,一切OK

来源:https://troyyang.com/2018/02/16/hosting-images-with-aws-s3/   作者:Troy

正确使用AWS S3的方式之打造自己的https图床「建议收藏」

(扫码关注获取更多知识讲解)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112071.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SPPNet总结

    SPPNet总结背景:RCNN使用CNN作为特征提取器,首次使得目标检测跨入深度学习的阶段。但是在RCNN中,因为全连接层的神经元个数是固定的(权重矩阵的维数是固定的),所以采取对于每一个区域候选都需要首先将图片放缩到固定尺寸(227×227),然后为每个区域候选提取CNN特征的方案。这里存在两个瓶颈,第一重复为每个regionproposal提取特征是及其费时的,SelectiveSearch对于每幅图片产生2k左右个regionproposal,也就是意味着一幅图片需要经过2k次完整的CNN计算得到最终的结果。

    2022年5月2日
    48
  • html转word java_word转excel排版不变

    html转word java_word转excel排版不变页面:无标题页页面后置文件:usingSystem;usingSystem.Collections;usingSystem.Configuration;usingSystem.Data;usingSystem.Linq;usingSystem.Web;usingSystem.

    2022年8月31日
    4
  • python期货程序化开发_使用文华财经进行期货程序化真的很low,自己编程才是正途…「建议收藏」

    python期货程序化开发_使用文华财经进行期货程序化真的很low,自己编程才是正途…「建议收藏」一、目前期货程序化现状由于有免费的CTP接口,期货程序化交易目前比较普遍,很多人都尝试过在文华财经、金字塔之类的软件上回测和编写实盘策略。期货程序化交易有很多优点:程序会按照设计自动执行,不受任何其它因素干扰,设计正确的请假下不会出错。借助于程序,交易速度更快,远远超过人工下单的速度。节省人工成本,一个策略可以部署多个机器人,特别当前期货存在夜盘的情况下,耗费非常大的人力成本。可以说,从事期货交易…

    2022年10月8日
    3
  • 什么是进程池_进程池的实现

    什么是进程池_进程池的实现今天学习了JIR、进程池和线程池GIL:GlobalInterpreterLock全局解释器锁锁的作用:为了避免资源竞争造成数据错乱python程序的执行过程1.启动解释器进程pyth

    2022年8月1日
    7
  • 简单介绍python的双向队列

    简单介绍python的双向队列

    2021年11月27日
    52
  • 用proxy实现一个更优雅的vue

    用proxy实现一个更优雅的vue

    2021年6月7日
    93

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号