1.要解决的问题
当由多个虚拟服务器提供web服务时,如果访问量变得很大,将通过增加虚拟服务器数量或提高虚拟服务器规格来处理负载。然而,大多数访问都是对静态内容的请求,所以如何分配访问静态内容变得至关重要。
2.云模式的说明
可以使用网络存储来分配静态内容的访问。这使得无需增加虚拟服务器的数量就可以应对负载。
使用这个方法要求将静态内容的URL地址转换为网络存储的URL地址。但这并不意味着你总是需要直接调整静态内容,你可以在分发时使用web服务器的Filter功能来改变URL地址。如果不想从网络存储中分发内容,你还可以使用内容分发服务器来进行分发。
3.实施
在AWS中,你可以使用亚马逊S3来分发静态内容。将存放在S3中的内容作为原始数据,并使用CloudFront内容分发服务,从而实现在全球范围内无延时地进行内容传递。
(步骤)
(同步)上传一部分EC2上的静态内容(JavaScript/CSS/图片等)至S3上。
如有必要,使用原始的(已同步)上传静态内容的S3生成一个CloudFront。(当使用CloudFront,可以直接使用EC2实例来代替S3作为原始服务器。)
用S3或CloudFront上的URL地址覆盖HTML标签中的静态内容地址。
你可以使用Apache过滤器模块或Nginx作为代理来动态地执行重写。
4.配置
5.好处
你可以为加载提供更强的健壮性,还可以将静态内容的访问分配至S3/CloudFront从而降低EC2的成本。
你可以使用CloudFront作为解决全球远距离传输而造成延迟问题的一个方法。
当使用mod_ext_filter/mod_sed、Nginx等这类功能,你可以在使用此模式时添加一个过滤器,而不用修改原始的HTML文件。通过简单地关闭过滤器,就可以很轻松地回到未使用CloudFront时的状态。
6.注意事项
当使用CloudFront时,由于内容缓存可能会出现删除或更新延迟的情况。