HZSH Site

Layer CDN-自建簡易CDN站點

Layer CDN不同於以往CDN供應商,
而是採取自建的模式架設,
類似建立鏡像站點,
可以選擇訪問速度快但品質普通的php主機進行架設,
若有主機儲存採用SSD是最理想的選擇,
可以降低傳送資料所需的反應時間。

 

Layer CDN官網 https://github.com/oott123/Layer (衍生版)

首先進入GitHub的Layer頁面的右下方Download ZIP下載程式

解壓縮

以文字編輯程式開啟config.sample.inc.php

替換原始站點網址、存放快取檔案的資料夾名稱、是否顯示歡迎頁面、防盜鏈設定

經過測試,進階設定必須進行其他設定才能使靜態檔案真正緩存到CDN主機,並提高安全性

define(‘PURGE_KEY’,’purge’); 這裡purge請隨意填寫(亂打即可,未來更新檔案的方式直接透過FTP刪除快取資料夾即可)

define(‘DIRECT_EXT’,’php|asp|htm|html’); 這裡只留php即可,即為 define(‘DIRECT_EXT’,’php’);

define(‘NO_LOCATE’,false); 這裡請改成true,以Google的說法應盡量減少301跟302跳轉,即為 define(‘NO_LOCATE’,true);

define(‘NO_KEY’,true); 經過測試,若不啟用MD5編碼作為檔名,將會造成檔案無法緩存,使CDN主機頻繁向原始主機請求,故改成 define(‘NO_KEY’,false);

高級設定只需修改

//define(‘RUN_ENV’, ‘GCS’); 這行將前面//去除,並將GCS修改成LOCAL,即為 define(‘RUN_ENV’, ‘LOCAL’);

針對比較複雜的防盜鏈,可以選擇不設定,也可以複製第二行

define(‘ALLOW_REGX’,’^(best33\.com|.*\.best33\.com)$’); 到define(‘ALLOW_REGX’,’.*’);覆蓋,並修改best33與com為您自己的網站

有一點可能要留意,由於系統架設可能會牽扯到自動化請求的問題,對於這類的主機,建議將

define(‘WELCOME_DOC’,TRUE); 改成false,使歡迎頁面不顯示,以免遭到主機商側目而停止服務

配置範例

完畢後另存新檔為config.inc.php,將整份Layer資料夾內容上傳到PHP主機

確認連線正常後,修改WordPress快取外掛的CDN連結(下圖引用自CDNSun教學)

此時站點的圖片JS與CSS素材就會經由PHP主機傳輸。

如果站點為https連線,建議CDN站點所使用的SSL證書與原始站點相同,防止一個頁面使用多張證書,縮短請求時間。

Layer CDN範例圖檔 透過https://img.hzsh.usCDN站點傳輸

如果用無痕開啟圖片的連結,就可以看到防盜鏈的效果喔!

由於目前允許使用CDN的主機只有VPS,這樣反而會建議使用LuManageCDNbest免費系統,其中LuManage可以支援SSL(或透過Apache的SSL模組安裝也可以支援)

或是直接啟用Apache的Proxy模組也可以達到同樣效果,但對於防盜鏈與SSL的配置可能會有點麻煩,但快取效果還蠻不錯的。

小提示,OpenShift選PHP5.4,透過sFTP上傳程式到app-root>runtime>repo資料夾

[新增]
最近測試以GAE架設CDN(SymPullCDN),效果同樣不錯,可惜沒有提供防盜鏈的功能,而且對於主機不再美國的源站傳輸會有超時的問題,可以把源站交由OpenShift緩存,再由GAE傳送。

SymPullCDN GitHub官網 https://github.com/symkat/SymPullCDN (Python26)

SymPullCDN GitHub分支 https://github.com/itsbalamurali/sympullcdn (Python27)

Google App Engine官網 https://cloud.google.com/appengine/docs

經過測試,建議要使用自訂網域到GAE上面,然後透過CloudXNS限制單一國家訪問GAE,其他地區全部指向OpenShift(或源站)才能解決GAE常出現的500錯誤!

[新增 2016/4/9]

測試擷取其他主機商的站點發現由於程序沒有配置USER AGENT,
導致回傳403禁止訪問的訊息,請到程序的/include/lib.php進行配置

請在第40行(下圖紅色線處)新增一行(Mozilla/5.0可以自訂內容)

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0");

即可將USER AGENT新增到LayerCDN供源站點辨識。

Comentários
Layer CDN-自建簡易CDN站點