本站提供互联网编程技术交流分享,部分技术教程不断更新中,请随时关注或联系我寻求帮助 有事点我吧同时也欢迎有兴趣的朋友进行投稿。

AWS CloudFront CDN直接全站加速折腾记The request could not be satisfied. Bad request.

AWS 熊哥club 3487℃ 12评论

20160315200318

ERROR

The request could not be satisfied. Bad request.

Generated by cloudfront (CloudFront)

Request ID: JC3i8piJpjRbuP81MNhSKPxt5KWirIInynZgwFJ9EYKuysjS5A_AnQ==

上面这个问题害我着急的很啊。在这里谢谢远在东京的小伙伴在百忙之中帮我分析解决这个问题。

使用AWS也有段时间了,基本常用的服务都用了,还有很多服务没用上,正在慢慢摸索中。。说实话,AWS的API真的是太全了,同时也太tmd的多了,看都看不完,只能用的时候慢慢翻。对于我这个En烂到家的人来说,有些文档看着不是一般的吃力啊。

 

今天来说说这几天折腾CloudFront的经历吧。因为目前维护的一些老的项目,都是一些无力吐槽的项目,各种静态图片和pdf加载,每月的账单全用在这流量上了。看到CloudFront有50G的免费流量干嘛不用呢(账号还在免费期,国外的云就是好,不像国内,说是免费或者优惠,其实呢。更难懂的是AWS居然有北京区域了,干嘛不提供免费期呢。。。。。)

对于CloudFront就不多介绍了,官方文档说明很详细,直接进入主题。看图说话。配置步骤其实很简单,很多都是默认(有些设置我自己也不知道具体干什么的,还在研究)

20160315181441

20160315181512

我这次是直接进行全站加速,选择的源是web服务器,所以这里就是www.xxxx.com 其他默认

20160315181534

这里 cname其实是个很重要的东西,我第一次填的是www.xxx.com 我的域名

20160315181605

接下来提交保存 会有这样一条记录 CF会分配一个默认域名。然后将你web服务器的源部署到全球所有节点。这个需要等待一会。博主大概等了20分钟 status状态才变成Deploy

然后通过这个域名直接访问 如果正常访问web页面,说明已经部署OK 了,然后要做的就是去你的域名服务器,增加cname记录,指向这个默认的域名d3uaXXXXX.cloudfront.net

 

一般添加好之后,试试有没有解析成功

直接nslookup你的域名,看看解析地址是否有多个,如下,如果正确就OK 了。说明域名解析成功,已经指向CF进行全站加速了

20160316210637

这个时候,你可以试试你网站的速度了。

 

下图是我加速前测试的速度
tonygourmet

 

加速后效果果然不一般,虽然AWS目前在大陆还没有CDN的加速节点,最近的在台湾。国内网速又那么坑爹。所以这样已经不错了。

cf20160316150821

到这里,我以为CDN已经OK了,谁知道没过多久。就出现本文开始的那段错误。。坑爹啊。咋回事呢,我就说没那么容易吗,记得之前有网友就跟我说过,说aws的这个CloudFront是个坑。。

我当时没在意,因为我简单的看了下官方文档,看说明,感觉很简单啊。。。就这样一步步配置,也就这样成功了。谁知道后面发生那么多未知的问题,然后就是按照错误提示,各种搜索,百度,google等,也搜到过类似的问题,但是按照其中的方法,发现还是不能解决我这个错误。

大部分都是配合S3使用的,还是对wp进行cdn配置,wp大家都知道,现成插件一大堆。安装启用设置就搞定了。那些方法根本没法解决我的这个错误问题。

 

没办法只能继续摸索改配置,各种试试。最终弄到后半夜,也没解决。还安慰自己说,官方说部署到全球节点在48小时以内,而且dns解析也需要时间,是不是等段时间就好了。干脆睡觉,第二天在看。

第二天一看,才发现是自己想多了。肯定是哪里配置错误了。但是错误在哪里,就一个一个再次改配置分析问题咯。只能先找到错误点再说。最终无奈寻求了技术群里的大牛进行求助。。。经过一个好友的共同分析,最终发现问题是自己配置的源和cname有冲突造成的。

 

应该改成这样

20160316212840

origin的源不应该直接跟你的域名是一样的,cnames同样,因为你的域名已经指向了EC2主机,域名的dns添加了cname指向了CloudFront,而CloudFront又从域名作为源缓存数据,这样感觉有点类似死循环的样子。

所以东京的这位小伙伴建议我设置个二级域名能够访问web的,然后CloudFront这里通过这个二级域名作为源,cnames对域名下所有子域名进行加速,就是这种*.域名的方式,通配符设置。

 

因为我应用服务器是IIS,就绑定了个二级域名,然后Dns域名服务器添加A记录,子域名指向EC2主机ip,这样一配置,果然等了半个小时,问题完美解决。。。。

 

这玩意断断续续折腾了2天时间,所以记录一下。网上又没有完全一样的教程,所以分享一下帮助更多遇到同样问题的人,希望对同类问题的人有所帮助。。。

 

截图码字不容易,只希望对你有帮助。同时感谢帮助过我的人。

 

本文地址: http://www.xiongge.club/366.html

转载请注明:熊哥club » AWS CloudFront CDN直接全站加速折腾记The request could not be satisfied. Bad request.

喜欢 (6)
[您的支持是我最大的动力]
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(12)个小伙伴在吐槽
  1. "建议我设置个二级域名能够访问web的,然后CloudFront这里通过这个二级域名作为源,cnames对域名下所有子域名进行加速" 这个做法是不科学的,正确的做法就是直接对源域名进行cname加速就行了,这也是官方推荐做法
    plot2017-06-13 09:50 回复
  2. 按照楼主方法是可以访问了,但是不知道SSL如何设置,我用certbot生成了ssl证书,怎么部署到aws上?还是用aws自己的免费SSL?
    tomsen2016-09-08 07:45 回复
    • SSL我没有配置过,aws的ssl好像是要用他自己的证书吧,具体不太清楚,你可以网上搜下资料
      熊哥club2016-09-08 09:15 回复
  3. 楼主 你最后是把哪个域名做的CNAME 指到EC2的主机上了?
    cfyun2016-06-07 16:42 回复
  4. 楼主,最后DNS解析上 你是把你的域名 a.xx.com 做个A记录指到了你所用的EC2的主机IP上 把*.xx.com做了个CNMAE指到了你的EC2主机IP上吗? cloudfront给随机提供的那个域名没做任何设置么?
    cciehao2016-06-07 16:35 回复
  5. 是后是需要直接把 *.xx.com 做个CNAME记录指到cloudfront提供的域名上么?
    cciehao2016-06-07 16:05 回复
    • cname到ec2主机ip
      熊哥club2016-06-07 16:15 回复
      • 是说把a.xx.com做个A记录指到EC2的主机IP 把*.xx.com做个CNAME指向EC2的IP么?
        cciehao2016-06-07 16:26 回复
      • 楼主 你最后是把哪个域名做的CNAME 指到EC2的主机上了?
        cciehao2016-06-07 16:38 回复
        • 就是二级域名,保证通过二级域名能够访问你的站点,然后把这个二级域名作为cdn的源
          熊哥club2016-06-08 09:00 回复
×
订阅图标按钮