本文首發於個人博客CODING Pages 靜態網站升級騰訊雲新版踩坑小記。
自己的踩坑記錄證明域名未備案的同學就不要升級了,新版需要付費,但升級后強制的境外 CDN 加速導致訪問速度反而不如舊版快。
升級背景
之前把博客雙部署到了 CODING 靜態網站和 GitHub Pages,國內的訪問速度快了不少。前幾天登錄 CODING 后台,突然發現多了一個新版升級提醒。
新版最大的變化就是同騰訊雲進行了打通,直接把網站放到了騰訊雲的對象存儲 COS 上,其他 CDN 加速、SSL 證書管理也是騰訊雲的功能。
新版開始收費了
CODING Pages 依托騰訊雲資源提供相關靜態托管能力,CODING 平台本身不收取任何費用。該產品使用了騰訊雲對象存儲 COS、內容分發網絡 CDN、SSL 證書產品,其中 COS 和 CDN 采用用量計費模式,SSL 證書免費,所使用到的其他相關騰訊雲產品本身亦會有一定的免費額度。
新版因為使用了騰訊雲的相關資料,所以要開始收費了。對於收費,我是能夠接受的,前提是能夠提供比免費更好的服務。我的圖床就是使用的騰訊雲的對象存儲,加載速度很快,一個月幾毛錢的費用低得基本可以忽略。
升級流程
新版升級界面如下:
因為新版是基於騰訊雲的,所以升級需要先在騰訊雲進行實名認證並授予相關權限。我因為之前圖床就是用的騰訊雲對象存儲,所以已經實名過了。
之前 CODING Pages 舊版是部署在騰訊雲新加坡節點,現在新版部署節點可選香港、北京、上海、廣州四個,但未備案域名只能選香港。
添加自定義域名前,需要前往騰訊雲開啟 CDN 功能,這一步就是我覺得新版最大的坑。
下一步去域名托管商更改解析記錄,解析記錄值都是指向了 cdn.dnsv1.com
,這也是為什么需要開啟 CDN 功能的原因。
部署的時候,「網站類型」我最開始選的是「Hexo」,結果部署失敗,部署日志也不知道抽啥風,一直顯示不出來,原因也不好排查。我嘗試將網站類型改為「靜態網站」,重新部署就成功了。
這 CDN 不能要
新版升級完成后,立馬測了一波速,然后被結果給嚇到了,從之前的一片綠油油變成了一片慘淡的黃色,訪問速度下降了不止一點半點。這就很費解了,同樣都是騰訊雲,之前部署在新加坡節點,現在搬到香港節點了,速度不升反降是什么情況。
檢查解析 IP,發現域名全都被解析到了德國、愛爾蘭、美國,和想象中的香港地址完全不是一回事。
這種情況我估摸着肯定是 CDN 的鍋,去騰訊雲后台一檢查,發現已經開啟的 CDN 設置的服務區域是「中國境外」。我想當然地以為「中國境外」的含義是指只有從國外訪問網站的時候才會通過 CDN 訪問,國內則是直接訪問香港源站,這樣雖然國內享受不到 CDN 加速,國外我設置是解析到 GitHub Pages,也用不上,但想着無非就是個雞肋而已。
但一查文檔,發現自己還是太單純了:
「中國境外」:全球用戶訪問均會調度至中國境外的加速節點進行服務。
也就是說,不管是從國內還是國外訪問,都會被調度到國外的 CDN 加速節點進行接入,想不經過 CDN 直接訪問香港源站都不行。而比較符合我想要的效果的「全球」則需要域名進行備案之后才能開啟,未備案域名開啟 CDN 的話就只能選「中國境外」。
本來是用來加快訪問速度的 CDN,對於使用未備案域名的博客來說,已經不僅僅是雞肋了,反而是拖累。本來直接訪問香港就能解決的事情,現在非得繞道德國、愛爾蘭、美國才行,這訪問速度能快起來才是怪事。
嘗試直連香港源站
既然這是 CDN 導致的,那我把 CDN 直接給關了,直連香港源站不就行了?
關閉 CDN
進入騰訊雲后台-->「內容分發網絡」-->「域名管理」,關閉 CDN 加速。
更改域名解析記錄
在 DNSPod 里將國內訪問解析到 CODING 提供的默認訪問地址,此時再檢查 DNS 解析結果發現就全部都指向了香港的 IP,達到了自己想要的效果。
致命的證書問題
設置成直接訪問香港源站后,速度果不其然就上來了,比訪問新加坡節點速度還要快上一點。但很快就出現了一個更加嚴重的問題——證書錯誤。
新版申請的 SSL 證書是和 CDN 綁定在一起的,在騰訊雲的證書管理里面只能部署到 CDN,而我把 CDN 關閉了,現在直接訪問的是香港源站。源站的證書是頒給 *.cdn.my.qcloud
的,和我的域名不一致,這就會導致瀏覽器直接報警說網站不安全,這是不可接受的。我嘗試解決這個問題,但無奈水平有限,最后也沒能找到解決的辦法。如果有知道如何解決證書問題的同學,麻煩指導我一下,不甚感激。
現在情況就是如果想要實現自定義域名 HTTPS 訪問,就需要打開 CDN,打開 CDN 就意味着犧牲訪問速度,這還是在 CDN 和 COS 需要付費的情況下。矛盾無法調和,所以最后我只能又回退到舊版了,幸好 CODING 目前還沒有關閉舊版的入口,給了我一個反悔的機會。
總結
花了差不多一天的時間,最后還是老老實實回到了舊版,相當於一天白折騰了。域名沒有進行備案的話,在國內使用不方便的地方真的太多了。CODING 新版靜態網站我覺得對於使用已備案域名的同學來說還是不錯的,配置簡單,CDN 加速、SSL 證書一步到位。但同樣的對於這些同學來說可供選擇的方案太多了,免費的也有不少,CODING 的新版並沒有太大的吸引力。
而對於未備案域名的同學新版則非常不友好,完全是負優化,完全沒有升級的必要,誰會花錢找罪受呢。CODING 工程師說舊版后續會下線,到時候如果自定義域名的問題沒有得到改善的話,可能就需要考慮遷移平台了。現在舊版還能用就先用着。
我向 CODING 反饋了自定義域名的問題,希望能同舊版一樣使用 Let's Encrypt 的證書,不要強行同騰訊雲的 CDN 加速綁定在一起,后續如果有進一步的反饋結果的話我會同步到博客中。