正确使用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图床「建议收藏」

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 论物联网与大数据、云计算、工业物联网、区块链「建议收藏」

    论物联网与大数据、云计算、工业物联网、区块链「建议收藏」论物联网与大数据、云计算、工业物联网、区块链我们当今的时代飞速发展,物联网、大数据、云计算这些名词在我们的生活中出现的越来越频繁,看似高大上的三者其实却和我们的生活息息相关。本篇文章就物联网、大数据以及云计算对三者之间的关系以及应用进行描述。工业物联网和区块链也进行了介绍。(一)物联网(1)什么是物联网物联网(InternetofThings,简称IoT)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采

  • 股票购买拐点在哪里

    股票购买拐点在哪里 股票购买拐点在哪里   逢低买,当然最好买在拐点。股价始向上的时候。   不过当主力刚开始吸筹时,反复震荡难免,没准还来一个诱空,这时介入心情极坏,毫无成就感,白受折磨。所以第一步,总是等主力先吃饱喝足,他是老大,我是小弟。   等主力吃够了喝足了,他会拉上去一点,最理想的介入点,就是等他洗盘结束时。当股价开始下跌,不必介入,再等,待拐点出现介入。   拐点在哪里呢?黄金分割?神奇数

  • 解惑4:java是值传递还是引用传递

    解惑4:java是值传递还是引用传递一、概述曾经纠结了很久java的参数传递方式是什么样的,后面粗略的了解了一鳞半爪以后有了大概的印象:“传参数就是值传递,传对象就是引用传递”,后面进一步查找了相关资料和文章以后,发现这么理解是不正确

  • jbuilder加载mysql驱动

    jbuilder加载mysql驱动

  • java三大框架容易学吗,要学多久?

    java三大框架容易学吗,要学多久?转自:http://www.pinlue.com/article/2021/02/1313/4711532901956.html

  • SpringBoot2 | SpringBoot启动流程源码分析(一)[通俗易懂]

    SpringBoot2 | SpringBoot启动流程源码分析(一)[通俗易懂]概述:前阵子看到了SpringCloud社区的一个开源项目,主要是对服务发现增强的功能。研究项目的时候发现代码简练,优雅,最主要是springioc和aop特性应用的得心应手。若非对源码有深入研究,不可能写出这么优秀的开源项目。另外在现有的springboot专栏中,大多数博文旨在应用,对一些中间件的整合之类,源码分析的博客数量有限。鉴于以上两方面,该系列应运而生。该系列主要还是Spri…

发表回复

您的电子邮箱地址不会被公开。

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