COS-CDN-PicGo搭建图床服务
简介
图床服务提供图片存储、图片加工处理、图片全网分发等功能。
由于博客中使用的图床不稳定,现尝试使用腾讯云的对象存储服务搭建图床服务。
参考腾讯云文档中心相关内容
存储桶
简介
存储桶(Bucket)是对象的载体,可理解为存放对象的“容器”,且该“容器”无容量上限。对象以扁平化结构存放在存储桶中,无文件夹和目录的概念,用户可选择将对象存放到单个或多个存储桶中。
创建存储桶
- 登录 对象存储控制台。
- 在左侧导航中,单击存储桶列表,进入存储桶列表页面。
- 单击创建存储桶。
- 在弹出的创建存储桶对话框中,配置如下信息:
- 基本信息
- 所属地域:请选择与您业务(或用户数量)相对集中的物理区域所对应的 COS 地域,设置后不可修改。地域的更多信息请参见 地域和访问域名。
- 名称:请输入自定义的存储桶名称。设置后不可修改。命名说明请参见存储桶的命名规范。
- 访问权限:存储桶默认提供三种访问权限:私有读写、公有读私有写和公有读写,设置后仍可修改。详细信息请参见存储桶访问权限。
- 请求域名:自动生成。创建完存储桶后,您可以使用该域名对存储桶进行访问。
- 确认信息无误后,单击创建,即可创建存储桶。在存储桶列表界面中,您可以看到刚才已创建的存储桶。
存储桶命名规范
存储桶的命名由存储桶名称(BucketName)和 APPID 两部分组成,两者以中划线“-”相连。
例如 examplebucket-1250000000,其中 examplebucket 为用户自定义字符串,1250000000 为系统生成数字串(APPID)。在 API、SDK 的示例中,存储桶的命名格式为 <BucketName-APPID>。
权限
存储桶默认提供两种权限类型:公共权限和用户权限。
公共权限包括:私有读写、公有读私有写和公有读写。其访问权限可通过对象存储控制台上的存储桶的权限管理进行修改。
- 私有读写
只有该存储桶的创建者及有授权的账号才对该存储桶中的对象有读写权限,其他任何人对该存储桶中的对象都没有读写权限。存储桶访问权限默认为私有读写,推荐使用。 - 公有读私有写
任何人(包括匿名访问者)都对该存储桶中的对象有读权限,但只有存储桶创建者及有授权的账号才对该存储桶中的对象有写权限。 - 公有读写
任何人(包括匿名访问者)都对该存储桶中的对象有读权限和写权限,不推荐使用。
用户权限:主账号默认拥有存储桶的所有权限(即完全控制)。另外 COS 支持添加子账号有数据读取、数据写入、权限读取、权限写入,甚至完全控制的最高权限。 通过对象存储控制台,在存储桶列表页面创建存储桶。
PicGo
安装PicGo
PicGo是一款支持多种云存储配置、快捷生成图片链接的工具。
更多相关内容参考PicGod的官方指南
下载PicGo-Setup-2.3.1-ia32.exe,安装2.3.1稳定版到本地windows环境。
参数设置
在图床设置里找到腾讯云 COS,并配置以下相关参数项
- COS 版本:选择 COS v5。
- 设定 Secretld:开发者拥有的项目身份识别 ID,用于身份认证,可在 API 密钥管理 页面中创建和获取。
- 设定 SecretKey:开发者拥有的项目身份密钥,可在 API 密钥管理 页面获取。
- 设定 Bucket:存储桶,COS 中用于存储数据的容器。有关存储桶的进一步说明,请参见 参数说明-存储桶。
- 设定 AppId:开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 API 密钥管理 页面获取。
- 设定存储区域:存储桶所属地域信息,例如 ap-beijing、ap-hongkong、eu-frankfurt 等。
- 设定存储路径:图片存放到 COS 存储桶中的路径。
- 设定自定义域名:可选,若您为上方的存储空间配置了自定义源站域名,则可填写。相关介绍可参见 开启自定义源站域名。
- 设定网址后缀:通过在网址后缀添加 COS 数据处理参数实现图片压缩、裁剪、格式转换等操作,相关介绍可参见 图片处理。
自定义源站域名
将自定义域名绑定至存储桶中,可通过这个自定义域名访问存储桶内的文件。
操作步骤
- 登录 对象存储控制台。
- 在左侧导航栏中,单击存储桶列表,进入存储桶列表页面。
- 单击需要配置域名的存储桶,进入存储桶配置页面。
- 在左侧导航栏中,选择域名与传输管理 > 自定义源站域名。
- 单击添加域名,配置项说明如下:
- 域名与CNAME:输入待绑定的自定义域名(例如 www.example.com)或者下拉选择已有的腾讯云域名。请确保输入的域名已 备案 且在 DNS 解析 DNSPod 控制台 添加解析(详细指引请参见 快速添加域名解析),并已在 DNS 服务商处设置好对应的 CNAME,详情请参见 CNAME 配置。
- 源站类型:分为以下几种。
- 默认源站:如果您希望将自定义域名用作默认源站,请选择默认源站。
- 静态网站源站:如果您希望将自定义域名用作静态网站,请先为存储桶开启静态网站功能,然后选择静态网站源站。
- 全球加速源站:如果您希望将自定义域名用作全球加速,请先为存储桶开启全球加速功能,然后选择全球加速源站。
- 配置完成后,点击创建,即可在列表页看到已配置的自定义源站域名。
- 如需配置证书,请单击绑定证书进行配置。绑定后,预计30分钟内生效。证书来源支持选择新上传证书和已托管证书。说明如下:
- 新上传证书:原自有证书。若您希望使用自有证书,请选择此项。
- 已托管证书:原腾讯云证书。若您希望使用腾讯云申请的证书,请选择此项。
- 根据所选的证书来源,选择配置如下信息
- 证书内容:
- 通常证书是以 .crt 或 .pem 等为扩展名的文件(例如 imgsc.aa.com_bundle.crt),请使用相应文本编辑器打开证书文件。
- 证书格式以“-----BEGIN CERTIFICATE-----”开头,以“-----END CERTIFICATE-----”结尾。
- 证书内容请包含完整的证书链。
- 私钥内容:
- 通常私钥是以 .key 或 .pem 等为扩展名的文件(例如 imgsc.aa.com.key),请使用相应文本编辑器打开私钥文件。
- 私钥格式以“-----BEGIN (RSA) PRIVATE KEY-----”开头,以“-----END (RSA) PRIVATE KEY-----”结尾。
- 托管SSL:
- 支持将新上传证书托管至SSL,默认勾选。建议您托管至SSL,托管后可在 SSL控制台 对证书进行管理,享受证书到期提示、告警、更新等托管服务。
- 通常私钥是以 .key 或 .pem 等为扩展名的文件(例如 imgsc.aa.com.key),请使用相应文本编辑器打开私钥文件。
- 私钥格式以“-----BEGIN (RSA) PRIVATE KEY-----”开头,以“-----END (RSA) PRIVATE KEY-----”结尾。
- 绑定成功后,在自定义源站列表页,您可看到当前证书的证书ID和到期时间。
- 若您希望重新绑定证书,可单击绑定证书。若您不希望绑定当前证书,可单击解绑证书。
CNAME记录
操作场景
如果需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录,最常用到 CNAME 的场景包括做 CDN、做企业邮箱。本文档指导您如何添加 CNAME 记录。
操作步骤
- 登录 腾讯云 DNS 解析控制台。
- 在 “域名解析列表” 中,选择需要进行 CNAME 记录转发的域名,单击操作栏的解析,进入该域名的记录管理页面。
- 单击添加记录,填写以下记录信息
- 主机记录:如果在步骤2中选择的是子域名,则此处填写”@“。如果选择的是一级域名,则此处填写子域名。在实际操作过程中,选择在子域名中添加CNAME记录,主机记录选择“@”。如果在一级域名中,添加 www.123.com 的解析,您在 “主机记录” 处选择 “www” 即可。如果只是想添加 123.com 的解析,您在 “主机记录” 处选择 “@” 即可。“@” 的 CNAME 会影响到 MX 记录的正常解析,添加时请您慎重考虑。
- 记录类型:选择 “CNAME”。
- 线路类型:选择 “默认” 类型,否则会导致部分用户无法解析。 例如,您需要将联通用户指向 2.com,所有非联通用户都指向 1.com。您可以通过添加线路类型为默认、记录值为1.com 和线路类型为联通、记录值为 2.com 的两条 CNAME 记录来实现。
- 记录值:CNAME 指向的域名,即存储桶对应的域名,只可以填写域名。
- MX 优先级:不需要填写。
- TTL:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。
- 单击确认,完成添加。
- 验证CNAME配置是否生效。
配置CNAME后,不同的DNS服务商CNAME配置生效的时间也不同。您可以通过输入ping或dig您所添加的加速域名来验证,如果被转向,即表示CNAME配置已经生效,CDN功能也已生效。
CDN
简介
为存储桶配置内容分发网络(CDN),实行相应的安全策略,此处将二级域名的CNAME解析到CDN,停用原有CNAME到存储桶的解析。
操作步骤
- 登录 内容分发网络控制台。
- 在左侧导航栏中,单击服务概览,进入CDN概览页面。
- 单击添加域名,进入CDN配置页面。
- 在加速域名中填写二级域名,加速类型选择CDN网页小文件。
- 源站配置中选择COS源,回源协议选择协议跟随。
- 关闭私有存储桶访问权限。
- 配置CNAME,在云解析控制台中,将二级域名的CNAME再次配置向CDN。
- 访问控制,此处设置了IP访问限频,阈值100次/秒。
- 开启HTTPS服务,HTTPS的免费额度为每月300万次。
- 用量封顶配置
- 每5分钟流量大于1G将会封禁,大于阈值的80%则告警
- 每5分钟HTTPS请求数大于1百万次将会封禁,大于阈值的80%则告警
- 保存并确认配置,在左侧导航栏-域名管理中可查看配置。
- 此时,COS已可以使用加速域名访问,在对象控制台中找到存储桶的自定义源站域名一栏,将自定义的源站域名下线。以后访问COS文件可选择加速域名访问。
防盗链设置
原理
防盗链是通过请求 Header 里的 Referer 地址来进行判断:
- Referer 是 Header 的一部分,当浏览器向 Web 服务器发送请求的时候,一般会带上 Referer,告诉服务器该请求是从哪个页面链接过来的,服务器就可以禁止或允许某些来源的网站访问资源。
- 如果直接在浏览器直接打开文件链接https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/1.jpg,请求 Header 里不会带有 Referer。
假设,用户 A 在 COS 上传了图片资源1.jpg,得到图片的可访问链接为https://XXXX/1.jpg。
- 用户 A 将该图片嵌入到自己的网页https://example.com/index.html上,图片能正常访问。
- 用户 B 在用户 A 网页上看到了该图片,决定将该图片嵌入在他自己的网页https://b.com/test/test.html上,此时用户 B 的网页也能正常显示该图片。
以上案例中,用户 A 的图片资源1.jpg就被用户 B 盗链了。此时用户 A 在不知情的情况下,COS 上的资源持续被用户 B 网页正常使用,用户 A 负担了额外的流量费用,造成了费用损失。
根据以上案例分析 ,用户 A 可以通过给存储桶设置防盗链规则防止用户 B 盗链图片,有两种实现方式:
- 方式一:配置黑名单模式,域名设置填入*.b.com并保存生效。
- 方式二:配置白名单模式,域名设置填入*.example.com并保存生效。
操作步骤
- 登录对象存储控制台,在左侧导航栏中单击存储桶列表,进入存储桶列表页。
- 选择需要设置防盗链的存储桶,进入存储桶。
- 在左侧菜单栏中单击安全管理 > 防盗链设置,进入存储桶防盗链设置的配置页。
- 在“防盗链设置”栏中,单击编辑,进入编辑状态。
- 开启防盗链,并配置名单类型和域名,此处选择开启方式二,详细说明如下:
- 类型:有黑、白名单两种:
- 黑名单:限制名单内的域名访问存储桶的默认访问地址,若名单内的域名访问存储桶的默认访问地址,则返回403。
- 白名单:限制名单外的域名访问存储桶的默认访问地址,若名单外的域名访问存储桶的默认访问地址,则返回403。
- Referer :设置域名支持最多十条域名且为前缀匹配,支持域名、IP 和通配符*等形式的地址。一个地址占一行,多个地址请换行。配置规则说明和示例如下:
- 支持带端口的域名和 IP,如example.com:8080、10.10.10.10:8080等地址。
- 配置example.com,可命中如example.com/123等以example.com为前缀的地址。
- 配置example.com,可命中如https://example.com和http://example.com为前缀的地址。
- 配置example.com,可命中它的带端口域名example.com:8080。
- 配置example.com:8080,不会命中域名example.com。
- 配置 *.example.com,可限制它的二级、三级域名example.com、b.example.com、a.b.example.com。
- 类型:有黑、白名单两种:
- 配置完成之后,单击保存即可。
安全设置记录
对COS相关的安全配置进行记录以便后续查阅
CDN
用量封顶配置
- 每5分钟流量大于1G将会封禁,大于阈值的80%则告警
- 每5分钟HTTPS请求数大于1百万次将会封禁,大于阈值的80%则告警
访问控制
- IP访问限频,阈值100次/秒。
告警管理配置
在腾讯云可观测平台侧边栏的告警管理-策略管理中,同样可以进行安全策略配置。
- 设置策略名称,在策略类型处选择对象存储并选择实例ID。
- 选择手动配置,阈值类型静态,告警配置如下
- 外网下行流量纯粒度1分钟内大于100MB,持续3个数据点,每小时告警一次
- 低频存储读请求纯粒度1分钟内大于1000次,持续3个数据点,每小时告警一次