关于在Dreamhost主机上使用CloudFront的一些说明 « 写一点 您所在的位置:网站首页 逆跳机械表 关于在Dreamhost主机上使用CloudFront的一些说明 « 写一点

关于在Dreamhost主机上使用CloudFront的一些说明 « 写一点

2022-06-05 19:43| 来源: 网络整理| 查看: 265

在上一篇文章中,介绍了为托管在Dreamhost主机上的博客空间使用CloudFront充当CDN加速服务器的大致做法。不过当时因为不太了解这种服务,有些疏漏,因此用这篇文章进行进一步解释说明。

先说说具体情况,本博客的域名是在GoDaddy注册的,但空间托管在Dreamhost的主机上。由于DH本身对这个功能的介绍不是太清楚,我以为直接在后台输入必要的CloudFront信息后,其他东西全部都不用管了,都可以自动进行,但实际上并不是这样。因此前几天,我以为我的网站已经被加速了,但其实根本没有,也许是心理作用才让我觉得速度快了吧。

为了让CDN正常生效,依然需要做下列几件事情:

通过某种机制,将网站指定内容统一复制到S3的某个Bucket中。 在域名服务器上修改DNS记录,添加一条CNAME记录,并指向CloudFront的分发点。 在网站上,通过URL Rewriting技术,将Bucket中存在的内容的链接进行替换。

下面分别介绍。

将内容从源复制到S3 Bucket

这一步可以在DH的后台进行。从左侧树形图中依次点击“Goodies – Amazon CloudFront”。输入必要的信息,其中第一行的“cdn”是指希望别人用于访问CDN中内容时使用的子域名,可以随意设置,但必须是要使用的网站域名下的子域名。随后第二行设置要将哪些内容复制到S3中。按照我的选择,我将该网站下的所有内容都复制了过去,但实际上如果有不同需求,也可以复制某个具体的目录。随后填写两个Key,并点击按钮添加。

在Dreamhost后台设置要复制的内容,以及复制到的目标

这个过程中,DH的后台程序会使用提供的Key,自动在S3中创建Bucket,并在CloudFront中自动创建分发。随后会自动将指定目录下的所有文件都复制到Bucket中。这些操作都不需要手工干预。此处的Bucket默认会创建到US-Standard的数据中心内,这个数据中心的各种费用也是最便宜的,但并没有使用低冗余存储。

接着用AWS帐户登录到AWS控制台,然后展开Amazon S3选项卡,并选中针对CloudFront创建的Bucket,例如下图中的“cdn.xieyidian.com”。单击“Properties”按钮展开这个Bucket的属性窗格,在“Permissions”选项卡下,单击“Add more permissions”,添加“Everyone”并为其分配“View Permissions”。

为Bucket设置必要的属性

随后切换到CloudFront选项卡下,这里应该已经创建好一个分发。单击选中,下方的属性窗格会显示出必要的信息。这里面需要注意,如果状态显示为“Deployed”,证明相关的设置操作已经完成,该分发点已经生效了。随后需要在下方的属性窗格中记下“Domain Name”显示的信息,例如本例中显示的是“d2q7gy996ell99.cloudfront.net”,这个信息将用于添加域名的CNAME记录,非常重要。

查看有关分发点的必要信息

至此Amazon这里的操作和设置全部完成。

为域名添加CNAME记录

这一步需要在域名服务器的所有者那里进行。例如虽然我的域名是在GoDaddy注册的,但因为主机在DH这里,因此在GoDaddy那里我直接设置了DH提供的名称服务器(NS)地址。所以这种情况下要添加CNAME记录,就必须在DH这里进行。

再次打开DH的后台界面,从左侧树形图中依次进入“Domains – Manage Domains”,随后这里列出了当前帐户下添加的所有域名。找到目标域名,并点击“DNS”链接。

选择要添加CNAME记录的域名

随后需要添加CNAME记录(什么是CNAME记录)。Name这里,只需要输入要使用的二级域名即可,例如本文第一张图片里设置的“Sub-Domain”是“cdn”,因此这里只需要输入“cdn”。随后需要选择该记录的类型,这里必须选择“CNAME”。接着是值,这个值实际上就是CloudFront分发点创建好后,在AWS控制台里显示的“Domain Name”,也就是上文强调过的那个“d2q7gy996ell99.cloudfront.net”。这个信息一定要正确。同时这里还有一个问题需要注意,取决于不同的DNS服务器设置,有些NS服务器,例如DH的,要求在这个“.net”之后再输入一个英文句点“.”;但据说有些NS服务器并不需要。具体情况请查阅NS服务器的说明信息,或者两种情况挨个尝试一下。设置完毕后单击按钮添加记录,添加好的记录会显示在“Custom DNS Records”类别下。

添加一条CNAME记录

至此域名这里的操作已经完成,不过DNS的改动在全球全面生效需要一段时间,最长可能需要48小时,因此可能需要等待一段时间才能看到最终结果。

重写URL

最后一步,就是将网站内容中的URL进行替换,这样浏览器才知道需要通过“cdn.xieyidian.com”这个域名(在CDN的缓存服务器中)找到所需内容,而不会去“www.xieyidian.com”的域名下获取内容(虽然也能找到,但这就等于没有用到CDN的加速功能)。

还是以WordPress为例,这次我换了一个插件,用的是OSSDL CDN Off-linker,这个插件唯一的用途就是重写URL,因此比较简单,也好上手。通过WordPress的后台界面安装,并激活后,在左侧树形图中打开“设置”,并点击OSSDL CDN Off-linker,随后即可看到配置界面。

配置URL的重写规则

首先需要在“off-site URL”这里输入上文添加的CNAME记录对应的地址,即“http://cdn.xieyidian.com”,域名结尾处不能输入“/”斜线,同时必须包含“Http://”或“Https://”,以代表要使用的具体协议。

“include dirs”选项,则对应了要重写的内容所在目录。以上图为例,这里列出了“wp-content,wp-includes”这两个目录,因此如果网站页面上包含了位于“https://www.xieyidian.com/wp-content/”或“https://www.xieyidian.com/wp-includes/”目录下的内容(这些内容可以位于这两个目录下的子目录中),那么该插件就会自动将完整连接中的“www.xieyidian.com”域名替换为“cdn.xieyidian.com”域名。对于WordPress来说,这两个目录下几乎包含了网站的一切内容,例如文章插图、主题文件、脚本文件、CSS文件等。

“exclude if substring”选项则决定了要排除,不进行重写的内容类型,我觉得没啥用,保留默认设置即可。

至此,最后一步工作终于完成了。

还有问题?

通过上述设置,再等待一段时间,让DNS记录传遍全球后,所有操作就全部执行完毕了。

不过对于Dreamhost主机的用户还有一个问题。本文涉及的方法是通过DH后台提供的页面和功能,将文件内容从原始位置复制到Amazon S3中的,但问题是,该功能只能手工执行,而不能自动按时执行。也就是说,如果以后发布了新的内容,这些内容将无法自动同步到CDN服务器上,而相关内容的链接已经被重写过了,因此将导致新发布的文章无法显示出插图(如果文章包含插图,并且插图并不是直接引用网上现有文件的话)。此时唯一的解决方法就是在DH的后台去,打开本文开头处第一张截图的界面,然后点击“Rescan Now”按钮,手工触发一次同步。

所以如果您的网站内容更新频繁,这种方法就不太合适了。不过对于我来说,我的个人站点,本身可能好几天,甚至好几周才添加一篇新内容,这个问题的影响并不是很严重,姑且这样用吧。不过我打算给DH提提建议,如果他们能提供自动定时同步功能,那当然最好了。

Share this:TwitterFacebook

Tags: Amazon CloudFront, AWS, 云计算, CDN

This entry was posted on 星期六, 3月 5th, 2011 at 下午 4:23 and is filed under IT. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有