设置第一方模式

本文档适用于希望以第一方模式部署 Google 代码的用户。我们建议您采用第一方模式,以实现最持久的代码配置。

借助第一方模式,您可以使用托管在您网站网域上的自有第一方基础架构部署 Google 代码。此基础架构位于您的网站和 Google 服务之间。本文档中的设置有助于您更好地衡量网站。您可以使用现有的内容传送网络 (CDN)、负载平衡器或 Web 服务器进行设置。

在标准 Google 代码设置中,您的网页会从 Google 网域请求 Google 代码。代码触发后,会直接向 Google 产品发送衡量请求。在第一方模式下,您的网站会从您的第一方网域加载 Google 代码。代码触发后,会向您的第一方网域发送衡量请求,这些请求会转发到相关的 Google 产品。

下图显示了第一方模式下的信息流:

第一方模式架构信息流。

准备工作

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

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

1. 选择代码投放路径

您必须在网站网域上预留一个路径来投放代码。请确保此路径未在您的网域中使用。

如需设置第一方模式,请选择您网站上尚未使用的任何路径。为降低与网站上现有路径冲突的可能性,您可以选择字母和数字的任意组合;如果您希望路径更易于阅读,则可以选择使用 /metrics/securemetric/analytics 或您想要的任何其他字词。

路径不得是根路径 /,也不得超过 100 个字符。

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

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

2. 路由流量

本部分假定您的网站已在使用可按路径来路由流量的 CDN 或负载平衡器。

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

创建新的后端

  1. 打开 GCP 负载平衡器

  2. 在您的负载平衡器中,打开后端配置部分。创建新的后端服务。后端配置设置的屏幕截图

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

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

配置路由规则

  1. 在您的负载平衡器中,打开转送规则部分。

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

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

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

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

如需以第一方模式投放代码,您需要为新子网域创建 CNAME 条目,创建用于转发请求的来源规则,并创建用于添加地理位置信息的转换规则。若要完成此设置,您需要订阅 Cloudflare 企业版方案。如果您没有企业版方案,不妨改用 Cloudflare 自动设置

创建 CNAME 条目

选择要为 CNAME 条目预留的子网域。请填写以下内容,以填充本文档中的示例。此 CNAME 绝不会在您的 Cloudflare 配置之外公开,因此名称可以是任意名称。

CNAME subdomain: fps
  1. 在“DNS”标签页中,打开记录部分。
  2. 使用以下配置添加新记录:
    • Type 设置为 CNAME
    • 名称设置为 fps
    • 目标设置为 G-12345.fps.goog
  3. 保存 CNAME 记录。

创建来源规则

  1. 在“规则”标签页中,打开来源规则并创建规则。
  2. 输入规则名称,例如 Route measurement
  3. 基于自定义过滤条件表达式匹配传入请求,然后点击修改表达式
  4. 将以下表达式粘贴到构建器中:(http.host eq "example.com" and starts_with(http.request.uri.path, "/metrics"))
  5. 主机标头更新为重写为...G-12345.fps.goog
  6. DNS 记录更新为替换为...fps.example.com
  7. 保存来源规则。
  8. 如果有其他来源规则,请提高新创建的规则的位置,以便其在任何其他通配路径之后运行。
  9. 在浏览器中,前往 https://example.com/metrics/healthy 验证设置。页面应显示 ok

包含地理定位信息

  1. 在“规则”标签页中,打开转换规则
  2. 创建修改请求标头规则。
  3. 将规则应用于所有传入请求
  4. 使用以下配置修改请求标头:
    • 将运算符设置为设为动态
    • 标头名称设置为 X-CfIpCountryRegion
    • 设置为 ip.src.subdivision_1_iso_code
  5. 部署转换规则。
  6. 请等待几分钟,让规则传播。在浏览器中,前往 https://example.com/metrics/?validate_geo=healthy 验证设置。页面应显示 ok

(可选)移除访问者 IP 标头

第一方模式无需访问者 IP 即可正常运行。您可以使用移除访问者 IP 地址标头的受管理转换来移除所有访问者 IP 地址标头。

如需以第一方模式投放代码,您需要配置 CDN 或负载平衡器,以将请求路由到第一方模式端点。

  1. 添加指向 G-12345.fps.goog 的源或后端。
  2. 主机标头替换成 G-12345.fps.goog。允许转发所有 Cookie 和查询字符串。
  3. /metrics/* 添加路径规则,以将流量路由到第一方模式。
  4. 配置预留的路径,使其优先级高于默认规则。
  5. 在浏览器中,前往 https://example.com/metrics/healthy 以验证设置。页面应显示 ok

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

将网站每个网页上的脚本替换为以下某个脚本:

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

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

并将其替换为测量路径:

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

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

测试效果衡量设置

如需测试衡量设置,请将容器配置为至少包含一个触发的代码。

  1. 前往 Tag Assistant 并预览您的容器。浏览您的网站以触发事件。

  2. Summary(摘要)> Output(输出)> Hits Sent(发送的命中数)标签页中,验证命中数是否已路由到 /metrics

    用于验证设置的屏幕截图