为广告客户设置 Google 代码网关

本文档面向希望为广告客户部署 Google 代码网关的用户。我们建议您使用面向广告客户的 Google 代码网关,以实现最持久的代码配置。

概览

借助面向广告客户的 Google 代码网关,您可以使用自己的第一方基础设施(托管在您网站的网域中)部署 Google 代码。此基础设施位于您的网站与 Google 服务之间。本文档中的设置将帮助您更好地衡量网站。您可以使用现有的内容分发网络 (CDN)、负载均衡器或 Web 服务器进行设置。

在标准 Google 代码设置中,您的网页会向 Google 网域请求 Google 代码。当代码触发时,它会直接向 Google 产品发送衡量请求。借助面向广告客户的 Google 代码网关,您的网站会从您的第一方网域加载 Google 代码。当代码触发时,系统会使用您的第一方网域向 Google 发送一些衡量请求。

此图显示了面向广告客户的 Google 代码网关中的信息流:

面向广告客户的 Google 代码网关架构信息流。

准备工作

本指南假定您的网站已配置以下内容:

首先,请选择您的设置类型。

1. 选择衡量路径

您必须在网站网域上预留一个唯一的衡量路径,用于传送每个代码或 Google 跟踪代码管理器容器。

衡量路径要求:

  • 路径不得已在您的网域中使用。
  • 每个路径都不能是根路径 /。
  • 每个路径不得超过 100 个字符。

Google 跟踪代码管理器:

如果您使用的是 Google 跟踪代码管理器,则只需提供容器 ID(例如 GTM-XXXXXX)。只需进行一次设置,即可满足已添加到相应容器中的所有代码(例如 Google Analytics、Google Ads 等)的需求。

对于每个唯一的容器或独立代码,您都需要一个唯一的传送路径及其对应的 ID。

如需设置面向广告客户的 Google 代码网关,请选择一个尚未在您的网站上使用的路径。为降低与网站上已有路径冲突的可能性,您可以选择任意字母和数字组合;如果您希望路径更易读,也可以选择使用 /gtm、/metrics、/analytics 等字词或您想要的任何其他字词。

例如:

使用场景 ID 代码投放路径 源端点
独立代码 1 G-12345 /abjfo/ g-12345.fps.goog
独立 Tag 2 G-67890 /fjdso/ g-67890.fps.goog
GTM 容器 GTM-ABCDEF /cvfjk/ gtm-abcdef.fps.goog

请填写以下内容,以填充本文档中的示例。

Your domain: example.com
Google tag ID: G-12345
Tag serving path: /metrics

如何处理多个代码或容器:

如果您的代码位于同一 GTM 容器中,则无需重复执行此设置。只需添加单个 Google 跟踪代码管理器容器,系统就会处理其中的所有代码。

如果您的代码位于不同的 GTM 容器中或未关联…您必须为每个实例重复此设置。这适用于以下情况:

  • 您运行多个独立的 Google 跟踪代码管理器容器。
  • 未包含在容器内的个别代码(例如 G-XXXXXX)。

执行此操作时,您必须为每个容器或代码指定一个唯一的代码投放路径。

2. 路由流量

此部分假定您的网站已在使用支持按路径路由流量的 CDN 或负载均衡器。

Google Cloud

您需要设置一个新的后端,用于查找网站访问者的大致地理位置,并在现有的外部应用负载均衡器中创建路由规则。

创建新的后端

  1. 打开 GCP 负载均衡器

  2. 在负载均衡器中,打开后端配置部分。 创建新的后端服务。 后端配置设置

  3. 使用地理定位信息配置新的后端服务:

    • 指定一个名称,例如 measurement-be-svc。
    • 将后端类型设置为互联网网络端点组。
    • 将协议设置为 HTTPS,并保留超时中的预填值。
    • 在后端下,点击互联网网络端点组下拉菜单,然后创建一个新的互联网网络端点组:
      • 将网络端点组类型设置为互联网 NEG(全球级、区域级)。
      • 将范围设置为全球。
      • 将添加方式设置为完全限定域名和端口。
      • 将完全限定域名设置为 G-12345.fps.goog。
      • 点击创建以创建端点。
      • 关闭网络端点组标签页,返回到新建后端服务标签页。
    • 搜索新网络端点组的名称,然后选择该名称。
    • 打开高级配置部分。添加以下自定义请求标头。
      标头名称 标头值
      Host G-12345.fps.goog
      X-Forwarded-CountryRegion {client_region_subdivision}
      X-Forwarded-Geolocation latlong={client_city_lat_long};city={client_city}
    • 查看其他设置。此集成无需使用 Cloud CDN 或 Cloud Armor,因此您可以放心停用这两项功能。
    • 保存新的后端服务。

配置路由规则

  1. 在负载均衡器中,打开路由规则部分。

  2. 添加以下主机和路径规则:

    主机 路径 后端
    * /metrics/* measurement-be-svc

  3. 更新负载均衡器配置。

  4. 在浏览器中,前往 https://example.com/metrics/healthy 验证设置。该页面应包含文本 ok。如需验证是否包含地理定位信息,请前往:https://example.com/metrics/?validate_geo=healthy。该页面应包含文本 ok。

Cloudflare

如需通过面向广告客户的 Google 代码网关部署代码,您可以使用 Cloudflare Snippets 转发请求。

创建代码段

  1. 在 Cloudflare 信息中心内,依次前往账号首页 > example.com > 规则 > 代码段。
  2. 点击 Create Snippet。
  3. 为代码段输入一个包含代码 ID(例如 google_tag_gateway_gtm_1234)的名称。该名称只能包含小写字母、数字和下划线,因此请将代码 ID 中的所有连字符 (-) 替换为下划线 (_)。
  4. 将 G-12345 占位符更新为您的具体 Google 代码 ID。
  5. 将提供的代码段粘贴到编辑器中:

    export default {
      async fetch(request) {
        const newRequest = new Request(request);
        const url = new URL(request.url);
        url.hostname = 'fps.goog';
        newRequest.headers.set('X-Gtg-Implementation', 'Snippet');
        newRequest.headers.set('X-Gtg-Tag-Id', 'G-12345');
        newRequest.headers.append('X-Forwarded-For', request.headers.get('CF-Connecting-IP'));
        newRequest.headers.set('X-Forwarded-Country', request.cf.country);
        newRequest.headers.set('X-Forwarded-Region', request.cf.regionCode);
        newRequest.headers.set(
          'X-Forwarded-Geolocation',
          `latlong=${request.cf.latitude},${request.cf.longitude};` +
            `city=${request.cf.city}`,
        );
        return await fetch(url, newRequest);
      },
    };
    
  6. 点击代码段规则,前往配置页面。

配置代码段规则

  1. 在代码段的规则页面上,选择 Custom filter expression(自定义过滤表达式)。
  2. 点击修改表达式,然后粘贴以下内容: (starts_with(http.request.uri.path, "/metrics/"))
  3. 点击完成以保存代码段规则。
  4. 点击 Deploy(部署)以激活代码段。
  5. 在浏览器中,前往 https://example.com/metrics/healthy 验证设置。该页面应包含文本 ok。如需验证是否包含地理定位信息,请前往:https://example.com/metrics/?validate_geo=healthy。该页面应包含文本 ok。

Akamai

若想通过面向广告客户的 Google 代码网关部署代码,您需要在媒体资源中添加一项新规则,以便转发请求并添加地理定位信息。

创建重定向规则

  1. 在 Property Manager 中创建新的交付配置版本
  2. 在 Property Configuration Settings(媒体资源配置设置)部分下,添加新的 Rule
    • 输入名称,例如 Route measurement
  3. 添加新匹配
    • 将匹配下拉菜单设置为 Path(路径)和 is one of(是其中之一)
    • 将匹配值设置为 /metrics/*
  4. 添加新行为
    • 选择 Standard Property Behavior(标准媒体资源行为),然后选择 Origin Server(源服务器)行为
    • 将源服务器主机名设置为 G-12345.fps.goog
    • 将 Forward Host Header(转发主机标头)设置为 Origin Hostname(源主机名)
  5. 保存新规则并部署更改
    • 在将新的重定向规则推向生产环境之前,请务必先在预演环境中进行测试
    • 提示:请确保您没有任何会修改或移除出站响应标头的规则。如果缺少 Content-Type 响应标头,这可能会导致 Google 脚本运行失败。

包含地理定位信息

  1. 在媒体资源配置设置下,选择您上面创建的重定向规则

  2. 添加新行为

    • 选择 Standard Property Behavior(标准媒体资源行为),然后选取 Content Targeting (EdgeScape)(内容定位 [EdgeScape])行为
    • 将启用设置为 true
  3. 保存新行为并部署更改。

    • 在将新的重定向规则推向生产环境之前,请务必先在预演环境中进行测试
  4. 在浏览器中,前往 https://example.com/metrics/healthy 验证设置。该页面应包含文本 ok。如需验证是否包含地理定位信息,请前往:https://example.com/metrics/?validate_geo=healthy。该页面应包含文本 ok。

Amazon CloudFront

如需通过面向广告客户的 Google 代码网关部署代码,您需要配置分发行为,以转发请求并添加地理定位信息。

添加新源

  1. 前往 Amazon Web Services (AWS) 中的“CloudFront”页面
  2. 选择 CloudFront Distribution(分发)
  3. 在 Origins(源)标签页中,使用以下设置创建源:
    • 将源网域设置为 G-12345.fps.goog
    • 将协议设置为 HTTPS Only

创建重定向行为

  1. 前往 AWS 中的“CloudFront”页面
  2. 选择 CloudFront Distribution(分发)
  3. 在 Behaviors(行为)标签页中,按照以下设置创建一个新的行为:
    • 将路径模式设置为 /metrics/*
    • 将来源和来源组设置为 G-12345.fps.goog
    • 将 Compress objects automatically(自动压缩对象)设置为 No(否)
    • 将查看器协议政策设置为仅限 HTTPS
    • 将 Allowed HTTP Methods(允许的 HTTP 方法)设置为 GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE
    • 在 Cache key and origin requests(缓存键和源请求)下,选择 Cache policy and origin request policy(缓存策略和源请求策略)
      • 将缓存政策设置为 CachingDisabled
      • 将源请求政策设置为 AllViewerExceptHostHeader
  4. 在行为列表中,请务必确认新行为的 Precedence 高于所有其他行为
    • 如需更改 Precedence,请选择相应行为,然后选择 Move up(上移)按钮,直到该行为的优先级高于所有其他行为。
  5. 在浏览器中,前往 https://example.com/metrics/healthy 验证设置。该页面应显示 ok。

包含地理定位信息

  1. 如需转发必要的地理定位信息,请在重定向行为中将 Headers(标头)设置为 AllViewerExceptHostHeader。
    • 如需查看 CloudFront 查看器位置标头的完整列表,请参阅这篇文章
  2. 请稍等几分钟,待您的分发完成部署。在浏览器中,前往 https://example.com/metrics/?validate_geo=healthy 验证设置。该页面应显示 ok。

Fastly

如需通过面向广告客户的 Google 代码网关部署代码,您需要配置 Fastly CDN 服务,以便转发请求并添加地理定位信息。此过程涉及创建一个条件、一个主机和两个 VCL 代码段。

创建条件和宿主

首先,您需要设置一个条件来识别发往网关的请求,并配置一个主机将这些请求路由到 Google。

  1. 使用以下设置创建新的条件:

    • 类型:Request
    • 名称:Google Tag Gateway Path(或您想使用的名称)
    • Apply if…(应用条件): req.url.path ~ "^/metrics"
  2. 使用以下设置创建新的主机:

    • 主机名/地址:fps.goog
  3. 使用以下附加设置配置新主机:

    • 点击附加条件,然后选择您在第 1 步中创建的条件。
    • 将替换主机设置为 fps.goog。
    • 其他设置均保留默认值。
    • 点击更新以保存主机。

添加 Google 代码 ID 和地理定位标头

接下来,您将添加 VCL(Varnish 配置语言)代码段,以附加您的 Google 代码 ID 和客户的地理定位数据。您必须使用完全相同的代码创建两个单独的代码段,一个用于 vcl_miss,另一个用于 vcl_pass。

  1. 在您的服务中,前往 VCL Snippets(VCL 代码段),然后创建一个包含以下字段的代码段:

    • 名称:Geo_MISS(或您想使用的名称)
    • Placement(放置位置):Within Subroutine
    • 子例程:vcl_miss
    • VCL:

      if (req.url.path ~ "^/metrics") {
        set bereq.http.X-Gtg-Tag-Id = "G-12345";
        set bereq.http.X-Forwarded-Country = client.geo.country_code;
        set bereq.http.X-Forwarded-Region = client.geo.region;
        set bereq.http.X-Forwarded-Geolocation = "latlong=" +
          client.geo.latitude + "," + client.geo.longitude + ";city=" +
          client.geo.city;
      }
      
  2. 创建另一个包含以下字段的代码段:

    • 名称:Geo_PASS(或您想使用的名称)
    • 类型:vcl_pass
    • VCL:

      if (req.url.path ~ "^/metrics") {
        set bereq.http.X-Gtg-Tag-Id = "G-12345";
        set bereq.http.X-Forwarded-Country = client.geo.country_code;
        set bereq.http.X-Forwarded-Region = client.geo.region;
        set bereq.http.X-Forwarded-Geolocation = "latlong=" +
          client.geo.latitude + "," + client.geo.longitude + ";city=" +
          client.geo.city;
      }
      

    现在,您应该有两个新的独立代码段。这样可确保将地理定位标头添加到需要从您的主机提取的任何请求中,无论是“缓存未命中”(vcl_miss) 还是“缓存透传”(vcl_pass)。

激活并验证完整配置

创建完主机、条件和 VCL 代码段后,您现在可以激活并测试完整设置。

  1. 点击启用以部署所有新更改。
  2. 在浏览器中运行这两项测试,以验证配置:

    • 测试 1(代码与路由):前往 https://example.com/metrics/healthy
    • 测试 2(地理定位):前往 https://example.com/metrics/?validate_geo=healthy

    两个页面都应显示 ok

其他

如需通过面向广告客户的 Google 代码网关投放代码,您需要配置 CDN 或负载均衡器,将请求路由到面向广告客户的 Google 代码网关端点。

  1. 添加一个指向 G-12345.fps.goog 的源或后端。
  2. 将主机标头替换为 G-12345.fps.goog。允许转发所有 Cookie 和查询字符串。
  3. 通过添加以下任一标头来传递访问者的地理定位信息:
    • X-Forwarded-CountryRegion - 用户的国家和地区,以单个 ISO 3166-2 代码表示(例如:US-CA)。
    • X-Forwarded-Country 和 X-Forwarded-Region:
      • X-Forwarded-Country - 用户的国家/地区,采用 ISO 3166-1 alpha-2 代码格式(例如:US)。
      • X-Forwarded-Region - 用户的地区细分代码(例如:CA)。
    • 如果同时包含这两组标头,则将使用 X-Forwarded-CountryRegion。
  4. 为 /metrics/* 添加路径规则,以便将流量路由到面向广告客户的 Google 代码网关。
  5. 配置预留路径,使其优先级高于默认规则。
  6. 在浏览器中,前往 https://example.com/metrics/healthy 验证设置。该页面应显示 ok。 如需验证是否包含地理定位信息,请前往:https://example.com/metrics/?validate_geo=healthy。该页面应显示 ok。

第 3 步:更新网站上的脚本以使用衡量路径

将网站每个网页上的脚本替换为以下内容之一:

gtm.js

在 <head> 部分顶部,将跟踪代码管理器代码段替换为以下内容:

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'/metrics/?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','');</script>
<!-- End Google Tag Manager -->

gtag.js

在 <head> 部分顶部,找到包含您的 Google 代码 ID 的两行脚本:

<!-- Google tag (gtag.js) -->
<script async src="//www.googletagmanager.com/gtag/js?id=G-12345"></script>

然后将其替换为衡量路径:

<!-- Google tag (gtag.js) -->
<script async src="/metrics/"></script>

测试衡量设置

如需测试衡量设置,请配置您的容器,确保其中至少有一个会触发的代码。

  1. 前往 Tag Assistant 并预览您的容器。
  2. 浏览您的网站,以触发事件。
  3. 在摘要 > 输出 > 已发送的命中标签页中,验证命中是否已路由到 /metrics。

    验证设置的屏幕截图