腾讯云使用总结

最近用了一些腾讯云的服务,因为不懂,所以我的小网站出了一些差错,于是抽时间了解了一下这些服务。这篇文章应该有很多说得不对的地方,我是文科生啊… 写出来是为了加深我自己的理解,毕竟写的过程就是重新思考的过程。如果有错请留言,我已经做好脸红的准备。因为主要是写给我自己看,所以也不做铺垫不做排版了。



云服务器:

  • 所谓云服务器,其实就是一部电脑,这部电脑和你在家里用的电脑有一些不同。它是远程的,它不在你家里,不在你办公室,它在远方,你通过网络连接它,使用它;它没有显示器,它显示的内容通过你家里的电脑显示出来,因为刚好你家里的电脑有屏幕,真巧。
  • 很多人建网站用 vps,vps 不是电脑,别搞错了。 vps 大概是电脑运行的一个程序,这个程序是什么东东?用得比较多的就是网站程序,把 wordpress 上传到这个程序,即上传到这个 vps,网站基本就搭建好了,非常简单,差不多就是上传一下,所以用 vps 建网站很简单。
  • 在云服务器上搭建网站比在 vps 上搭建网站复杂很多,不信?你在你的电脑建一个网站试试,因为云服务器就是一台电脑,有些云服务器运行 windows 系统,有些运行 linux 系统,如果你在你自己的电脑可以建一个网站(先不考虑域名的事),那你在云服务器就可以建一个网站。vps 上传一下就差不多可以了,但是你把 wordpress 下载到你的电脑,解压,网站就出来了吗?没有。在这之前你要先安装、设置很多程序,把这些东西搞定之后(大概可以理解为你自己建一个 vps),再下载 wordpress 解压一下放在合适的文件夹,网站就出来了。

CDN:

  • CDN 就是一种代理服务器,一个中间人,它站在用户和你的网站中间,它保存了你的博客的一个副本,用户访问你的域名时,CDN 服务器把它的副本发送给用户,这样可以提高访问速度,还可以减轻你的服务器压力,不少 CDN 服务每个月有免费额度,收费也不贵,比花钱提高自己的服务器的性能性价比更高吧。
  • 腾讯云 CDN 可以对自有源的数据进行加速,例如搭建在 vps 或其他云服务的博客,也包括部署在 github page 等服务的静态网站。
  • 也可以对腾讯的对象存储(COS)进行加速,对象存储就像网盘,把文件放在这个“网盘”,这些文件也可以设立一个中间人(CDN服务器),由这个中间人保存副本,响应用户请求

对象存储:

  • 腾讯对象存储有 4 种域名:访问域名,访问节点链接、默认加速域名、自定义加速域名。
  • 访问域名、访问节点链接都是对象存储自动生成的链接,很长,前者适用于 XML API,不是很懂这个东东,比较直观的区别是,你上传到对象存储的文件也可以通过这个域名进行下载,即通过 访问域名/文件名 这种链接下载文件。而访问节点链接不会下载这些文件,把它复制粘贴到浏览器,它只会在浏览器窗口显示这些文件,这意味着你完全可以把一个静态网站部署在对象存储,说到静态网站,很多人会想着部署到 github page,但 github pape 在国内的访问速度比较慢,一种折中的方法是部署到国内的对象存储,不过呢,把网站数据更新到 github page(例如你写完了一篇文章,发布到 github page)很容易很方便,但更新到对象存储就有点麻烦。
  • 另外两个域名是默认加速域名、自定义加速域名,它们都是用来通过浏览器“显示”文件的,所以它们都是访问节点链接的替身,之所以有这两个替身,是因为对象存储也可以设置 CDN 加速,腾讯对象存储的 CDN 加速需要设置一个加速域名,而访问节点域名则作为源站,也不需要给加速域名设置 cname。这个加速域名可以由腾讯为你自动生成,也可以把它设置成你自己的域名,例如我的 kejiweixun.com,无论是腾讯自动生成的加速域名(即默认加速域名),还是设置成我自己的域名(即自定义加速域名),都明显比访问节点链接短。所以如果你希望通过浏览器“显示”而不是“下载”文件,那没有什么理由不设置加速域名吧,而且设置加速域名后,依然可以通过访问域名“下载”文件。
  • 我看到有人把静态网站部署在对象存储,添加自定义加速域名,这样就搭建了一个拥有独立域名的网站了。

域名解析:

  • 域名解析是一件至关重要的事,域名解析的意思是“解析域名”,即把域名进行解析,只有解析了,你的浏览器才能知道这个域名对应哪个 ip 地址,根据 ip 地址就可以知道这个域名的数据保存在哪个服务器。
  • 如果希望域名直接访问源站,例如直接访问你的 vps 博客,通常需要把域名解析到你的 vps ip 地址。
  • 如果希望域名访问 cdn 代理服务器(如果你使用了 CDN 服务,就要这样做),那需要把域名解析到 cdn 服务器的域名。这个 cdn 域名哪里来?设置 cdn 时会自动生成 cdn 域名,把它添加到域名解析即可。为什么是解析到 cdn 服务器的域名,而不是 cdn 服务器的 ip 地址呢,我前面说解析就是解析到 ip 地址啊?cdn 服务器的域名自己也会解析,你的域名解析到 cdn 域名,cdn 域名会再解析到 ip 地址,可以通过 dig 这个命令查看。
  • 如果希望域名访问 github page,那通过域名解析,把域名指向 xxx.github.io 这个域名,详看下文 github page 部分。
  • 除了指向自己的服务器,其他都通过更改 cname 值来绑定,一句话概括:希望域名首先访问哪里,就把域名指向哪里。

域名 SSL 证书:

  • ssl 证书是一种能让域名通过 https 协议进行数据传输的一种凭证,腾讯云可以申请免费的 ssl 证书,不少 ssl 证书需要花钱买,对个人用户而言这笔费用不便宜。https 协议最大的好处是可以对数据进行加密传输,基本是破解不了的,而 http 协议没有对数据进行加密,所以从你的浏览器到服务器之间,黑客理论上可以获取这些数据,如果这些数据包含了你的密码(每天我都需要输入很多次密码)就不太好咯。部署 ssl 证书由两种情况。
  • 第一种情况是把申请好的证书下载下来,自己部署到服务器,适合使用云服务器建站的用户使用,不适合 vps,因为 vps 就是一个程序的一个空间,你可以在这个空间存储你的数据,但你不能改造这个空间,例如你可以在网盘存放数据,但你不能改造这个网盘的代码。而云服务器是一部电脑,你拥有了这部电脑的操作权限,你甚至可以改造整个操作系统,加个 ssl 证书当然没问题。
  • 那通过 vps 建站的用户怎么办?第二种情况是申请证书之后,把证书部署到 cdn 服务器,因为用了 cdn 之后,通常就由这个 cdn 服务器向用户提供服务,你的 vps 不能装 ssl 证书,但是腾讯 cdn 服务器可以,当然 cdn 服务器访问你的服务器时,通常还是用 http 访问。

GitHub Page:

  • GitHub Page 不是腾讯云的服务,不过它可以搭配腾讯云使用。GitHub Page 是一个用来存放静态网站数据的服务,静态网站的文章可以自己用 html css 等语言手写,如果不懂 html css(大多数人不懂),还可以通过静态网站生成器写,因为静态网站生成器可以把 markdonw 语法的纯文本自动转换为 html css 等文件,所以用户只需要写容易得多的 markdonw 纯文本即可(印象笔记也开始支持 markdown 了)。
  • GitHub Page 就是一个有固定格式名称的 repo(仓库),这个固定格式是 (github用户名).github.io,例如kejiweixun.githut.io,这个repo 名称也是 github page 的域名,把 repo 的名称复制到浏览器地址栏,就可以访问这个静态网站。如果你不喜欢这个 repo 名称作为你的网站域名,也可以把它绑定自己的域名,只需要在域名解析服务把自定义域名的 cname 值绑定 xx.githun.io  这个域名即可,这样就建成了一个拥有独立域名的网站。

Hexo:

  • 它也不是腾讯云的服务,不过也可以撘配腾讯云使用。Hexo 是一个静态网站生成器,顾名思义,生成器生成器,是指它可以“生成” html 网页文件。首先通过 hexo 支持的 markdown 语法写纯文本文档(你可以用任何支持 markdown 语法的工具写,例如印象笔记、有道笔记,还有很多专门的 markdown 写作工具),然后通过 hexo 的一两条命令行把这些纯文本文档转换成 html 文档,hexo 会按照你事先设定的规则 (例如样式,主题等) 自动转换成 html 文档。
  • 转换之后就可以把这些 html 文件上传到 github page 或者对象存储或者其他服务中。hexo 支持通过 git 把文件上传到 github,只需要输入几条命令行就可以自动上传,很方便,至于对象存储,hexo 默认应该不支持直接上传到腾讯的对象存储,最糟糕的做法是手动上传,就像上传到网盘一样,我看到有人自己写脚本自动上传。hexo不是最受欢迎的静态网站生成器,按照 github star 的数量来看,只能排在第五,不过 hexo 中国用户比较多。

难点是 CDN

CDN 对我来说是一个比较难的问题。CDN 是一种代理服务器,我喜欢顾名思义,所谓代理,可以理解是中介,中间人。CDN 获取你的网站数据,作为副本保存起来,用户访问你的域名其实就是访问这个副本(要使用 CDN 就要把域名解析到 CDN 服务器)。这里有个问题:CDN 的副本怎么和你的网站数据保持同步?很简单,CDN 会主动更新它的副本,从哪里更新?从你的网站更新。在 CDN 这个语境中,你的网站被称为源站,CDN 服务器访问源站这个动作被称为回源。腾讯云 CDN 有很多关于源站、回源的设置,要了解这些设置是什么意思,应该先了解基本的 http 知识,因为网络数据大多通过 http 协议(包括https)进行传输,如果你不了解 http 协议,就不了解大多数网络数据如何传输,就不了解源站和回源的相关设置。我就不太懂这方面的知识,吃了几次亏。

腾讯云的 CDN 需要设置源站信息,即告诉 CDN 服务器源站在哪里,这样它才能准确地更新副本,源站信息可以填写 ip 地址,也可以填写域名,作用都是告诉 CDN 服务器源站在哪台或哪几台服务器中。这还不够,因为很多服务器,一台服务器就部署了很多个网站,例如通过 vps 建站,这个 vps 在一台服务器,而这个服务器同时有多个 vps。那怎么区分你的源站在哪里呢?通过域名区分,这台服务器每一个 vps 通常到租给了不同的用户,这些用户的域名通常各不相同。所以,域名既可以帮助 CDN 服务器确认源站在哪台服务器(当然这个任务可以通过 ip 地址确认),确认服务器之后,再确定在这台服务器的那个位置。

CDN 另一项设置也很重要,它叫缓存过期配置。CDN 保存源站的一份副本,缓存过期配置可以设置缓存什么时候失效,什么时候有效,腾讯 CDN 可以针对文件类型、文件夹、文件路径分别设置有效时间。CDN 最适合用来缓存静态文件,例如 txt、html、jpg 等等,对于动态文件,例如 php 等等,它们是“动态”的,缓存到 CDN 之后,就失去了“动”的能力,可能导致无网页无法正常工作。我的网站 kejiweixun.com 有一段时间登录不上后台,就是因为这里设置不当,因为 wordpress 博客的后台地址是 kejiweixun.com/wp-login.php,是动态的 php,后来我把所有 php 后缀的文件的缓存时间从设置为 0,即不再缓存这些文件,所有访问 php 的请求直接通过源站响应,这样我的网站又可以登录后台了。

正如我前面所说,CDN 更适合缓存静态文件,因为静态文件不会频繁改变,所以 CDN 可以过一段时间,例如过几个小时,甚至过几天,又或者过一个月才回源更新副本,有利于减轻源站的压力、加速用户的访问速度。如果你的网站主要由动态文件造成,例如论坛,很多人评论,很多人互动,那你的网站可能主要由动态文件组成,这时候为了向用户显示实时的内容,CDN 服务器就要频繁回源,缓存过期配置的时间设置就要设置得很低,甚至设置位 0。有一段时间,我明明已经发布了一篇新文章,但是刷新网址总刷不出来,后来才知道是 CDN 的原因。大多 CDN 服务允许博主在 CDN 后台手动提交链接,告诉 CDN 现在就更新这些链接的缓存,小网站可以这样做。

腾讯 CDN 有一个叫回源跟随301/302的配置,这个名称不好理解,为什么不起一个可以顾名思义的名称?太讨厌了。这个选项下面有一行小字体,它是这样解释的:开启回源301/302跟随后,节点回源请求若返回301/302状态码,则直接跳转获取资源,不会返回301/302给用户。这句描述还是不容易明白。回源跟随301/302的配置其实可以改成:回源时,是否开启 301/302 跟随。前面我说过 CDN 时不时就要回源更新它的缓存,如果用户请求的某项资源 CDN 服务器没有,例如某张图片,某个视频,某个 html 页面等,CDN 服务器会回源获取,如果源站也没有,但如果源站知道哪里有,源站就会向 CDN 服务器返回一段包含 301 或 302 代码的响应,这段响应往往还包括一个新的地址,这个地址就有用户请求的资源。如果你没有开启 301/302 跟随,那 CDN 服务器的任务就算结束了,它会把源站的 301 或 302 响应转手返回给用户的浏览器,浏览器收到响应之后,再跳转到新的域名获取资源,这时你可能会看到浏览器的地址栏的域名,从你访问的那个域名,例如 kejiweixun.com 自动跳转成了 xxxx.com。我作为博主,并不希望这样,我希望留住访客,所以我会开启 301/302 跟随。开启之后,CDN 服务器从源站哪里收到包含 301 或 302 代码的响应后,CDN 服务器的任务还没有结束,它会自动从这个响应提取新的地址,然后向这个地址发出请求以获取用户需要的资源,获取之后,缓存到 CDN 服务器,再直接把资源从 CDN 发送给用户,浏览器发出第一次请求之后就可以从容地坐等“收货”。

还有一个选项如果设置不当,也会导致地址栏的 url 跳出你的域名范围,甚至导致网站无法访问。正如我前面所说的,很多个人网站不支持直接部署 ssl 证书,所以不能通过 HTTPS 响应任何请求,所以腾讯 CDN 允许站长在后台设置 CDN 服务器回源时,默认通过 HTTP 协议发起回源请求,而不是通过 HTTPS 协议发起。对于那些支持 HTTPS 的源站,一个例子就是 github page,那你需要把回源方式设置位“协议跟随”,这个协议就是 HTTP 或 HTTPS 协议,跟随的意思是 CDN 服务器跟随源站的协议发出请求,虽然说是跟随,但这个选项只有在你的源站部署有效证书时,才有用,否则会导致回源失败。

最后值得一说的是腾讯 CDN 的鉴权配置,腾讯官方的描述:CDN 上分发的内容为默认公开资源,为了避免恶意用户通过技术手段,盗链服务商提供的内容进行牟利,腾讯云 CDN 支持 URL鉴权配置。URL 鉴权多用于视频、安装包等内容的安全保护。我前面说过的对象存储可以设置默认加速域名,设置默认加速域名时,它会提示你可以开启鉴权配置,什么是鉴权配置呢?其实就是你把网站资源发布到网络中,例如图片、视频等等,用户获取了这些资源的链接,就可以长久使用你的资源,如果你不希望这样做,可以通过鉴权配置,把链接变成一个动态的链接,这个动态链接隔一段时间会自动更新(时间由你设定),例如 300 秒后自动更新,这样别人获取了你的链接之后只能在一小段时间可以利用这些资源(除非他在这段时间快速复制了这些资源)。经过鉴权配置处理过的 url 有一段被 md5 算法加密处理过,所以别人不可以推算出 url 自动更新的规律,进而在一定程度上起到保护资源的目的。因为你知道 url 的加密规律,所以你可以在网站后端写一些代码(后端代码别人通常看不到,前端代码才可以),让代码按照这个规律自动生成有效的 url,腾讯云也会按照这个规律自动更新资源的 url,两处 url 应该是相同的,所以你的网站可以获取你保存在腾讯云的资源。

关于 CDN 是否影响 google analytics 统计,应该是不影响的。ga 代码存在于任何一个你希望统计的网页页面,这个页面无论从 CDN 服务器响应给用户,还是从你的源站响应给用户,当页面被打开后,ga 就会被触发,并进行统计。因为 ga 代码并没有和源站绑定,而是和页面绑定,所以不会影响。

发布者

科技微讯

大家可以关注微信公众号「科技微讯」啊哈哈哈,那里基本每天都更新哦!看科技视频,就看科技微讯!(•̀ᴗ•́)و ̑̑

《腾讯云使用总结》上有4条评论

  1. 太开心了,有你的地方我都会留言,高兴你回来了,永远爱你。

发表评论

电子邮件地址不会被公开。