Amazon CloudFront 加速网站

一直用 Amazon 的 EC2 服务,昨天折腾一下想着把 CloudFront 用上,结果弄了一下午没成功。

先看看 CloudFront 的配置参数

Origin Settings

create cloudfront 2-origin-settings

Origin Domain Name: 源服务器的域名 Origin ID: 源服务器ID,可以是 Origin Domain Name 描述,必须唯一,方便在后面的配置中使用

Default Cache Behavior Settings

create cloudfront 3-default-cache-behavior-settings

默认的缓存策略设置,这个应该属于高级一点的内容,这里先不说

Distribution Settings

create cloudfront 4-distribution-settings

这里重要的参数是 Alternate Domain Names(CNAMEs)

CNAMEs 就是访问网站的域名

这里面有2个重要的域名设置

一个是 Origin Domain Name,另外一个是 Alternate Domain Names(CNAMEs),如果要网站可以正常访问的话这2个域名必须正确设置,那么这2个分别有什么用,先来看看,使用 CloudFront 加速过之后的用户访问网站后端流

  1. 用户打开网站
  2. 用户计算机请求域名解析,返回域名的IP地址(这里返回的是 CloudFront 的 IP)
  3. 用户计算机通过IP连接服务器(这里连接的是 CloudFront 的服务器)
  4. CloudFront 解析源域名的IP地址
  5. CloudFront 连接源域名的IP地址并获取内容
  6. CloudFront 把获取的内容返回给用户

这里我们省略的缓存的内容,这里不说

第1步用户打开网站输入的域名就是 Alternate Doamin Names 设置的域名 第4步 CloudFront 通过源服务器获取内容的域名的就是 Origin Domain Name

到这里问题就来了,根据 CloudFront 的设置 Origin Domain Name 和 Alternate Doamin Names 的域名必须不一样,如果一样的话就成了死循环。

假如我们使用 www.xxx.com 作为 Alternate Domain Name,Origin Doamin Name 为 origin.xxx.com,这样的话同样也有问题

比如说我们的登录程序,使用了 http referer 作为登录成功后的返回页面,由于 CloudFront 使用了 origin.xxx.com 请求了源服务器,所有我们在源服务器上获取到的 http referer 就成了 origin.xxx.com,这样登录成功之后跳转就跳到了 origin.xxx.com

当然这个问题可以通过改程序来解决,那么如果不改程序如何能通过 CloudFront 来解决呢?

This entry was posted in Internet and tagged , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>