是否需要为弹性负载均衡器和AWS S3分别设置不同的CloudFront分发?
将我的网站托管在AWS Elastic Beanstalk上,网站所用图片均存储在S3存储桶中并从中读取。我计划为该网站配置AWS CloudFront分发,现咨询两个问题:一是是否需要为弹性负载均衡器和存储图片的S3存储桶分别配置两个不同的CloudFront分发?二是如果仅为负载均衡器配置CloudFront分发,网站的图片是否会被自动缓存以供后续访问使用?
问题一解答
不需要,你完全可以用单个CloudFront分发同时对接两个源站,操作逻辑如下:
- 在同一个CloudFront分发配置中添加两个源:一个源为你的Elastic Beanstalk对应的弹性负载均衡器,负责处理网站动态内容请求;另一个源为存储图片的S3存储桶,负责处理静态图片请求
- 额外配置缓存行为规则,比如设置路径匹配规则为
/images/*(对应你网站图片的统一路径前缀)的请求自动转发到S3源,其余所有请求转发到ELB源即可
如果你的业务有图片使用独立子域名(如img.example.com)的需求,也可以单独为S3配置独立的CloudFront分发,这属于可选方案,不是必须要求。
问题二解答
不会。
你当前架构中网站的图片是直接从S3存储桶读取的,意味着用户访问网站时,图片请求是直接指向S3的访问地址,完全不会经过你为ELB单独配置的CloudFront节点,自然无法被CloudFront缓存。
如果要复用这个为ELB配置的CloudFront缓存图片,你需要做两处调整:
- 在该CloudFront分发中新增S3作为源站,配置对应图片路径的转发规则
- 修改网站代码中所有图片的引用路径,统一改为走该CloudFront的域名,而非直接指向S3地址
内容的提问来源于stack exchange,提问作者Paul Chase
相关产品推荐
相关产品推荐

