正确使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10中安装centos7双系统

    win10中安装centos7双系统不能识别ntfs盘怎么处理。./configuremakemakeinstall用fdisk-l查看下分区表里ntfs盘都是什么盘。为这里在win10下的ntfs盘分别为sda1、sda2、sda3、sda5、sda6添加挂载在计算机下mnt文件下中新建几个文件夹分别用来挂在你的ntfs硬盘。这里我在mnt文件夹下新建了study、work、funmoun…

    2022年7月24日
    14
  • 51单片机最小系统电路图_51单片机最小系统介绍

    51单片机最小系统电路图_51单片机最小系统介绍单片机最小系统包括单片机,电源电路,晶振电路和复位电路。电源电路:目前主流单片机的电源分为5V和3.3V这两个标准,STC89C51需要5V的供电系统。晶振电路:晶振为11.0592MHz(可以准确得到波特率9600和115200),为单片机系统提供基准时钟信号,电容(C2、C3)的作用是帮助无源晶振起振,并维持振荡信号的稳定。复位电路:为了防止程序跑飞,当芯片工作异常时,可以按下复位键重新启动。复位电路分为高电平复位和低电平复位,89C51是高电平复位。在单片机系统中,系统上电启动的时候复位一.

    2022年8月30日
    2
  • Service中bindService

    Service中bindService最近有用到Activity需要不断的从Service中获取数据,第一个想法肯定就是通过bind回调机制了,有几点概念模糊特此记录下:单独使用bindService(),unbindService()会经历:->onCreate()->onBind()->Servicerunning->onUnbind()->onDestroy()。单独使用startSer…

    2022年6月10日
    47
  • 2批处理for循环中截取字符串_批处理for循环嵌套

    2批处理for循环中截取字符串_批处理for循环嵌套一、参数/dfor/d%%变量in(集)do命令/d参数是指定仅对目录而不是文件执行的for命令。例1:在命令行输入(不是在批处理,之后不再解释)for/d%ain(c:\*.*)doecho%a运行会把C盘根目录下的全部目录分次显示出来,而不显示文件名看起来有点乱,如果把命令提示回显关闭就清晰了:for/d%ain(c:\*….

    2022年10月12日
    0
  • 各种智能优化算法比较与实现(matlab版)

    各种智能优化算法比较与实现(matlab版)各种智能优化算法比较与实现(matlab版)一、方法介绍1免疫算法(ImmuneAlgorithm,IA)1.1算法基本思想免疫算法是受生物免疫系统的启发而推出的一种新型的智能搜索算法。它是一种确定性和随机性选择相结合并具有“勘探”与“开采”能力的启发式随机搜索算法。免疫算法将优化问题中待优化的问题对应免疫应答中的抗原,可行解对应抗体(B细胞),可行解质量对应免疫细胞与抗原的亲和度。如…

    2022年5月24日
    58
  • mysql实现主从复制的日志是哪种_Redis主从复制

    mysql实现主从复制的日志是哪种_Redis主从复制Mysql实现主从复制

    2022年8月13日
    5

发表回复

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

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