主機是別家的可以用 Cloud CDN 嗎? 一招教你客製外部來源!

cdn-external目前 Cloud CDN 雖然尚未支援 GCP 以外的來源(external origin),但我們可以在 HTTP(S)負載平衡器 (HTTP(S) Load Balancer) 的後端服務 (back-end services) 採取由 GCE VM 自建 Reverse Proxy 的方式提供原站的檔案給 Cloud CDN 讀取,便可快速的享用 Google 強大全球網路下的 CDN 服務。Reverse Proxy 的 VM 規格可使用 n1-standard-1,搭配 Linux 作業系統安裝 Nginx 或 Apache,建議後端 instance group 群組至少兩台避免 SPOF,  以下提供 Nginx 對於網站圖片,CSS 與 JS 的範例設定檔如下:

upstream assets {

       server 35.46.57.68:80;

}

server {

       listen 80;

server_name assets.gcp.expert;

       location ~* \.(?:jpg|jpeg|gif|png|ico|svg|svgz|css|js)$ {

               add_header Cache-Control "public";

               expires 86400;

               proxy_pass http://assets;

               proxy_set_header Host $host;

               proxy_set_header X-Real-IP $remote_addr;

               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

       }

}

其中 upstream 的內容請修改為您的伺服器 IP/Domain Name 資訊,expires 值為Cloud CDN 上的快取時間。進階的CDN快取設定如對於通訊協定, 主機名稱或網址參數(URL query string) 快取,皆可透過快取金鑰 (cache keys) 的設定完成。其中在網址參數可指定白名單與黑名單作為 CDN 認定 URL 是否為同一個資源的判斷,可參考 https://cloud.google.com/cdn/docs/using-cache-keys

至於 Cloud CDN 內建於 HTTP(S)負載平衡器上的功能,資源是否能被 Cloud CDN 快取的詳細限制請參考 https://cloud.google.com/cdn/docs/caching#cacheability

連絡我們