AWS全球代理 Oncloud AI

谷歌云搭配cdn回源到存储桶使用(不公开桶)

  

核心思路是:Google Cloud CDN 最近增加了对私有源认证(Private Origin Authentication)的支持,可以用来配置对私有 GCS Bucket 的访问 。关键在于使用 Internet NEG(网络端点组) + HMAC 密钥 来让 CDN 安全地访问私有 Bucket,用户无需直接访问 GCS。

整体架构如下:

用户请求 → 自定义域名(DNS A 记录)→ HTTPS 负载均衡器 → Cloud CDN(缓存命中/未命中)→ Backend Service(HMAC 认证)→ Internet NEG → 私有 GCS Bucket

步骤1:创建Cloud Storage存储桶


  1. 导航到Cloud Storage

    • 左侧菜单 → Storage → Cloud Storage

  2. 创建存储桶(选好区域后一直保持默认设置就可以)

    text 
    [创建] → [创建存储桶]
    • 名称your-cdn-bucket(全局唯一)

    • 位置类型区域(如: asia

    • 存储类别标准

    • 访问控制统一

    • 保护工具: 按需启用

  3. 上传文件

    • 点击存储桶名称进入

    • 上传文件上传文件夹

    • 或使用拖放上传

      image.png

步骤2:创建服务账号并生成 HMAC 密钥

创建一个服务账号,赋予最小权限(例如自定义角色,仅包含 storage.objects.get 权限) Substack。然后去 Cloud Storage 的设置页面,切换到"互操作性(Interoperability)"标签,在"服务账号的 HMAC 密钥"部分为这个服务账号创建 HMAC 密钥。务必记录好 Access Key 和 Secret。

image.png

创建密钥时只展示一次,保存好。

image.png

步骤3:给服务账号授权 Bucket 访问

回到存储桶界面, 在 Bucket 的权限(Permissions)标签页中,点击"授予访问权限",添加刚才创建的服务账号,并赋予 "Storage Legacy Object Reader" 角色 Blogdoang

image.png


image.png 

步骤4:创建 Internet 网络端点组(Internet NEG

导航到 Compute Engine → 网络端点组,创建一个 Internet NEG,默认端口设为 443,选择"通过完全限定域名和端口添加",域名填写 你的bucket名.storage.googleapis.com Blogdoang

image.png


步骤5:创建全局外部 HTTPS 负载均衡器

进入 Network Services → Load Balancing,创建负载均衡器,选择 Application Load Balancer (HTTP/HTTPS),选择面向公众(external)和全局工作负载 Medium

配置要点:

  • Frontend 配置:预留一个静态外部 IP 地址,协议选 HTTPS,并创建 Google 托管的 SSL 证书(填入你的自定义域名,如 cdn.yourdomain.com)。

  • Backend 配置:后端类型选择 "Internet network endpoint group",选择第四步创建的 Internet NEG,协议选 HTTPS。启用 Cloud CDN Blogdoang

  • 自定义请求头(关键!):在后端的高级配置中,添加自定义请求头,Header 名为 Host,值为 你的bucket名.storage.googleapis.com Substack。如果不设置这个,负载均衡器会把客户端的 Host 头(你的自定义域名)转发给 GCS,导致找不到 Bucket。


注意: GCP的CDN需通过负载均衡器配置

  1. 导航到负载均衡

    text
    左侧菜单 → [网络服务] → [负载均衡]
  2. 创建 全部保持默认设置即可,直到前端配置

    text
    [创建负载均衡器] → [开始配置]
    • 选择 HTTP(S) 负载均衡 → [继续] 

    • image.png

  3. 前端配置

    名字写你方便记住是哪个项目的,选https,IP地址那里创建一个,创建这个IP也要自定义名字 写你方便记住是哪个项目的

    image.png

image.png

    • https就必须要选择证书,如果你已经有自己的域名证书了就上传没有就用谷歌的
      image.png

    • ✅ 勾选启用从 HTTP 到 HTTPS 的重定向

3.2 后端配置

  1. 选择创建后端服务,名字记住了稍后还要用
    • image.png

往下滑动是CDN配置,找到自定义请求头 

image.png


步骤4:配置路由和转发

  1. 主机和路径规则

    text
    简单宿主机和路径规则  保持默认即可,看下后端是你设置的名字就行

    image.png

  2. 完成配置

    text
    [创建] → 等待负载均衡器创建完成(约2-5分钟)

步骤6:配置私有源认证(Private Origin Authentication)

这一步目前只能通过 CLI 完成 Medium。在 Cloud Shell 中执行:

谷歌云右上角打开shell界面

image.png

  1. # 导出现有后端服务配置
    gcloud compute backend-services describe YOUR_BACKEND_SERVICE_NAME \
      --global > backend-config.yaml
      
    比如在负载均衡中我的后端服务名是 testhou。YOUR_BACKEND_SERVICE_NAME 就是指定你刚才创建的后端服务名
    导出后端服务配置gcloud compute backend-services describe testhou \
      --global > backend-config.yaml

    image.png 

  2. # 编辑 backend-config.yaml,添加 securitySettings部分
    securitySettings:
      awsV4Authentication:
        accessKeyId: "你的HMAC_ACCESS_KEY"
        accessKey: "你的HMAC_SECRET"
        accessKeyVersion: "v1"
        originRegion: "auto"


有一点要注意:导出的 YAML 文件里会包含一些自动生成的字段,在导入之前需要先删掉这几行(如果有的话):

  • creationTimestamp

  • fingerprint

  • id

  • selfLink

  • kind

这些是只读字段,不删的话导入会报错

删掉这些行:creationTimestampfingerprintidkindselfLinksecurityPolicyusedBy。末尾加上了 securitySettings

image.png

accessKeyIdaccessKey 替换成你的 HMAC 密钥后,执行导入:

gcloud compute backend-services import testhou --source=backend-config.yaml --global

 步骤7:配置 DNS

  1. 导航到Cloud DNS或是你自己域名所在的解析商添加解析

    text
    打开负载均衡器,选择htpps那条,打开能看到一个IP地址:443
  2. 指定解析

    image.png

    image.png


  3. 记录类型:A 记录
    主机记录:oss
    记录值:填写您在 GCP 上创建的 负载均衡器(Frontend)的静态 IP 地址

    等待10-30分钟左右 SSL证书那里显示生效了,就可以访问你的自定义域名了,比如原来默认存储桶地址是https://storage.googleapis.com/txxxxxx/GCP.png
    现在访问https://oss.abc.com/GCP.png

步骤8:创建安全策略防恶意刷流量

直接在搜索栏搜 "Cloud Armor"

点击 "创建策略",填写:

  • 名称:比如 my-cdn-policy

  • 策略类型:如果是给 Backend Bucket 用,选 "边缘安全策略(Edge security policy)";如果是给 Backend Service(HMAC 方案)用,选 "后端安全策略(Backend security policy)"

  • 默认规则操作:选"允许"(先放行所有,然后加规则去拦截)

image.png

添加速率限制规则

image.png

将策略绑定到指定后端服务,两种方式 1是在创建规则时绑定如下图,

image.png

2是负载均衡器 → 编辑 → 后端配置,在后端存储桶或后端服务的设置里,有一个 "Cloud Armor 安全策略" 下拉框,选择你刚创建的策略


image.png


高级CDN配置(可选)

  1. 缓存策略配置

    text
    负载均衡器 → [后端配置] → 点击后端存储桶名称
    • 包含查询参数

    • 排除特定头部

    • 缓存静态内容

    • 强制缓存模式

    • 使用缓存键和缓存策略

    • 缓存模式:

    • 缓存键策略:





WhatsApp
Telegram
Email