天天看點

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

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

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就不多介紹了,官方文檔說明很詳細,直接進入主題。看圖說話。配置步驟其實很簡單,很多都是預設(有些設定我自己也不知道具體幹什麼的,還在研究)

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

我這次是直接進行全站加速,選擇的源是web伺服器,是以這裡就是www.xxxx.com 其他預設

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

這裡 cname其實是個很重要的東西,我第一次填的是www.xxx.com 我的域名

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

接下來送出儲存 會有這樣一條記錄 cf會配置設定一個預設域名。然後将你web伺服器的源部署到全球所有節點。這個需要等待一會。部落客大概等了20分鐘 status狀态才變成deploy

然後通過這個域名直接通路 如果正常通路web頁面,說明已經部署ok 了,然後要做的就是去你的域名伺服器,增加cname記錄,指向這個預設的域名d3uaxxxxx.cloudfront.net

一般添加好之後,試試有沒有解析成功

直接nslookup你的域名,看看解析位址是否有多個,如下,如果正确就ok 了。說明域名解析成功,已經指向cf進行全站加速了

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

這個時候,你可以試試你網站的速度了。

下圖是我加速前測試的速度

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

加速後效果果然不一般,雖然aws目前在大陸還沒有cdn的加速節點,最近的在台灣。國内網速又那麼坑爹。是以這樣已經不錯了。

到這裡,我以為cdn已經ok了,誰知道沒過多久。就出現本文開始的那段錯誤。。坑爹啊。咋回事呢,我就說沒那麼容易嗎,記得之前有網友就跟我說過,說aws的這個cloudfront是個坑。。

我當時沒在意,因為我簡單的看了下官方文檔,看說明,感覺很簡單啊。。。就這樣一步步配置,也就這樣成功了。誰知道後面發生那麼多未知的問題,然後就是按照錯誤提示,各種搜尋,百度,google等,也搜到過類似的問題,但是按照其中的方法,發現還是不能解決我這個錯誤。

大部分都是配合s3使用的,還是對wp進行cdn配置,wp大家都知道,現成插件一大堆。安裝啟用設定就搞定了。那些方法根本沒法解決我的這個錯誤問題。

沒辦法隻能繼續摸索改配置,各種試試。最終弄到後半夜,也沒解決。還安慰自己說,官方說部署到全球節點在48小時以内,而且dns解析也需要時間,是不是等段時間就好了。幹脆睡覺,第二天在看。

第二天一看,才發現是自己想多了。肯定是哪裡配置錯誤了。但是錯誤在哪裡,就一個一個再次改配置分析問題咯。隻能先找到錯誤點再說。最終無奈尋求了技術群裡的大牛進行求助。。。經過一個好友的共同分析,最終發現問題是自己配置的源和cname有沖突造成的。

應該改成這樣

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

origin的源不應該直接跟你的域名是一樣的,cnames同樣,因為你的域名已經指向了ec2主機,域名的dns添加了cname指向了cloudfront,而cloudfront又從域名作為源緩存資料,這樣感覺有點類似死循環的樣子。

是以東京的這位小夥伴建議我設定個二級域名能夠通路web的,然後cloudfront這裡通過這個二級域名作為源,cnames對域名下所有子域名進行加速,就是這種*.域名的方式,通配符設定。

因為我應用伺服器是iis,就綁定了個二級域名,然後dns域名伺服器添加a記錄,子域名指向ec2主機ip,這樣一配置,果然等了半個小時,問題完美解決。。。。

這玩意斷斷續續折騰了2天時間,是以記錄一下。網上又沒有完全一樣的教程,是以分享一下幫助更多遇到同樣問題的人,希望對同類問題的人有所幫助。。。

繼續閱讀