目前 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