10/07 2020

【PHP on AWS】Day 5-Amazon Lightsail 也可套用 AWS CloudFront

Nextlink PHP on AWS Cloudfront

何謂 CDN?

內容傳遞網路(英語:Content Delivery Network或Content Distribution Network,縮寫:CDN)是指一種透過網際網路互相連接的電腦網路系統,利用最靠近每位使用者的伺服器,更快、更可靠地將音樂、圖片、影片、應用程式及其他檔案傳送給使用者,來提供高效能、可擴展性及低成本的網路內容傳遞給使用者。(資料來源:維基百科)

為何要用 CDN?

CDN 其實有很多的好處

1. 讓 USER 離你的端點進一點,速度快點
2. 快取靜態資源,減低伺服器的負載
3. 降低被攻擊的風險,本土的陽春 CDN除外,國際廠商的 CDN 基本上都幫你抵禦 L3、L4 的攻擊
4. 隱藏主機,很多人的主機還是低分散的狀態,知道的網站就可以猜說你的其他服務是不是在同一台

其實好處還有很多,只要是走 http 的服務基本上都一定可以套用到 CDN 上除非特殊需求不然很少沒辦法做到套用的。

AWS CDN (AWS Cloudfront) 使用說明前文

在列表跟事前準備文章的時候其實已經是一段時間之前了,在這段時間中 AWS Lightsail 已經整合了 Cloudfront 與 AWS Certificate Manager。之前都是透過 Cloudfront 設定的介面來操作,雖然現在已經不需要那麼麻煩了,但是由於該文件需要時間消化且不是那麼易讀好懂。

本文提供的設定方式還是以原生 cloudfront 為主,因為這個方式不論哪個雲、哪個地端都可以通用,是相容性比較高的用法。

AWS CDN (AWS Cloudfront) 使用基礎使用說明

找到 Networking & Content Delivery 類別點選類別內的 Cloudfront 進入設定

AWS CDN (AWS Cloudfront) 初步設定

在一個新帳號點入的時候因該呈現現在這個樣子,點選藍色的Create Distribution就可以開始建立了

這個畫面我不知道明年還會不會存在,因為 AWS 即將於年底停止 RTMP 這個在前端早該淘汰的協議了

但是以現在來說因該暫時都不會消失

點選 Web 中的 Get Started 即可開始設定

因下列的設定非常的繁雜,我分三段截圖說明,以下只說重點,在這個系列之後還會再做詳解!

1. Origin Settings
2. Default Cache Behavior Settings
3. Distribution Settings

只需填寫 Origin Domain Name ,這邊是看伺服器在哪邊填寫,可以解析到那台伺服器的URL。他可以只是一個導引功能,也可以是真正跟你伺服器訪問的URL,取決於 Behavior 的設定,這個等詳解再說。

基礎設定可以選擇都不動,但是這樣很容易錯誤,建議修改幾個地方:

1. Allowed HTTP Methods 改為 GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
2. Cache Policy 改為 Managed-CachingDisabled
3. Origin Request Policy 改為 Managed-AllViewer

這改法蠻爛的,就是啥都不快取轉發到原站,但如果 Default 是我建議這樣設定最不會錯,要快取啥東西在進階中再進行Behavior定義。

1. Alternate Domain Names (CNAMEs) 一定要注意你要用那個 URL 來指到 CDN 一定要設定上去
2. SSL Certificate 如果沒有 https 不管他,如果有 https 請參考 Day 6

設定之後呢?

點選 Create Distribution送出,之後就是做 DNS 指向到產出的URL

要注意的是這個 URL 一定要是Distribution Settings 中 Alternate Domain Names (CNAMEs) 的域名指過來才有效

不用時的刪除方式

要刪除基本上很多人都卡住,為何 Delete 就是不能點選刪除?

這是 AWS 設計的防呆機制,如果要刪除只能刪除已停用的,所以說要刪除前要先點選Disable進行停用且要等他生效

在下圖這個狀況就可以點選來進行刪除囉!

這邊如果還是發生不能刪除的狀況請注意上上圖的紫色部分,Cloudfront 都是要等 Status 中顯示 Deployed 才能進行下一步喔

請持續鎖定 Nextlink 架構師專欄,以獲得最新專業資訊喔!

若您有任何 AWS 需求,歡迎與我們聯繫!