
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就不多介紹了,官方文檔說明很詳細,直接進入主題。看圖說話。配置步驟其實很簡單,很多都是預設(有些設定我自己也不知道具體幹什麼的,還在研究)
我這次是直接進行全站加速,選擇的源是web伺服器,是以這裡就是www.xxxx.com 其他預設
這裡 cname其實是個很重要的東西,我第一次填的是www.xxx.com 我的域名
接下來送出儲存 會有這樣一條記錄 cf會配置設定一個預設域名。然後将你web伺服器的源部署到全球所有節點。這個需要等待一會。部落客大概等了20分鐘 status狀态才變成deploy
然後通過這個域名直接通路 如果正常通路web頁面,說明已經部署ok 了,然後要做的就是去你的域名伺服器,增加cname記錄,指向這個預設的域名d3uaxxxxx.cloudfront.net
一般添加好之後,試試有沒有解析成功
直接nslookup你的域名,看看解析位址是否有多個,如下,如果正确就ok 了。說明域名解析成功,已經指向cf進行全站加速了
這個時候,你可以試試你網站的速度了。
下圖是我加速前測試的速度
加速後效果果然不一般,雖然aws目前在大陸還沒有cdn的加速節點,最近的在台灣。國内網速又那麼坑爹。是以這樣已經不錯了。
到這裡,我以為cdn已經ok了,誰知道沒過多久。就出現本文開始的那段錯誤。。坑爹啊。咋回事呢,我就說沒那麼容易嗎,記得之前有網友就跟我說過,說aws的這個cloudfront是個坑。。
我當時沒在意,因為我簡單的看了下官方文檔,看說明,感覺很簡單啊。。。就這樣一步步配置,也就這樣成功了。誰知道後面發生那麼多未知的問題,然後就是按照錯誤提示,各種搜尋,百度,google等,也搜到過類似的問題,但是按照其中的方法,發現還是不能解決我這個錯誤。
大部分都是配合s3使用的,還是對wp進行cdn配置,wp大家都知道,現成插件一大堆。安裝啟用設定就搞定了。那些方法根本沒法解決我的這個錯誤問題。
沒辦法隻能繼續摸索改配置,各種試試。最終弄到後半夜,也沒解決。還安慰自己說,官方說部署到全球節點在48小時以内,而且dns解析也需要時間,是不是等段時間就好了。幹脆睡覺,第二天在看。
第二天一看,才發現是自己想多了。肯定是哪裡配置錯誤了。但是錯誤在哪裡,就一個一個再次改配置分析問題咯。隻能先找到錯誤點再說。最終無奈尋求了技術群裡的大牛進行求助。。。經過一個好友的共同分析,最終發現問題是自己配置的源和cname有沖突造成的。
應該改成這樣
origin的源不應該直接跟你的域名是一樣的,cnames同樣,因為你的域名已經指向了ec2主機,域名的dns添加了cname指向了cloudfront,而cloudfront又從域名作為源緩存資料,這樣感覺有點類似死循環的樣子。
是以東京的這位小夥伴建議我設定個二級域名能夠通路web的,然後cloudfront這裡通過這個二級域名作為源,cnames對域名下所有子域名進行加速,就是這種*.域名的方式,通配符設定。
因為我應用伺服器是iis,就綁定了個二級域名,然後dns域名伺服器添加a記錄,子域名指向ec2主機ip,這樣一配置,果然等了半個小時,問題完美解決。。。。
這玩意斷斷續續折騰了2天時間,是以記錄一下。網上又沒有完全一樣的教程,是以分享一下幫助更多遇到同樣問題的人,希望對同類問題的人有所幫助。。。