自定义网域配置

本文面向希望在与其网站相同的第一方环境中托管服务器端代码植入的开发者。同源传送是一种最佳做法,可让您充分利用由服务器设置的 Cookie 的安全性和持久性优势。以下说明适用于设置同源传送,无论您的网站上部署的是哪种 Google 代码(gtag.js 或 gtm.js)。

首次设置代码植入服务器时,该服务器托管在云服务提供商提供的网域上。使用默认端点时,代码植入服务器会将数据传输到服务器容器,但是在第三方环境中运行。为充分发挥第一方环境的优势(如更持久的 Cookie),您的代码植入服务器和网站必须在同一网域上运行。

下表说明了在 www.example.com 上托管父级网站时,如何托管代码植入服务器:

同源(最佳做法) 子网域 默认网域
示例网址 https://www.example.com/metrics https://metrics.example.com https://metrics.run.app
可否受益于由服务器设置的 Cookie 完全获享安全性和持久性优势。 完全获享安全性和持久性优势。 否。只能设置 JavaScript Cookie。
设置复杂性 配置 CDN 或负载均衡器来转发请求。可能需要更新 DNS 条目。 更新 DNS 条目。 已预先配置。

选择实现方式后,即可开始操作。

前提条件

本指南假定您满足以下条件:

  • 已在跟踪代码管理器中设置服务器容器
  • 设置代码植入服务器
  • 具有可以转发请求的 CDN 或负载均衡器。
  • 如果您使用 App Engine:代码植入服务器必须运行 2.2.0 或更高版本。如要让您的代码植入服务器为未来做好准备,请迁移到 Cloud Run

配置自定义网域

您可以将服务器容器设置为在网站所用网域中的一个路径上运行。例如,如果您的网站使用 www.example.com 处理网络流量,请为您的服务器容器预留 www.example.com/metrics 等路径。

在同一源上设置服务器端代码植入的示意图。

1. 选择要用于代码植入服务器的网域路径

系统将预留此路径以实现第一方传送。请务必选择一个尚未使用的路径。

您可能希望使用的路径示例包括:/collect/metrics/data

请记好此路径字符串。您将在后续步骤中使用该字符串来代替在任何位置看到的 /metrics

2. 将流量路由到您的代码植入服务器

如果您的网站已设置可按路径来路由流量的 CDN 或负载均衡器,请跳到第 4 步。

  1. 添加指向您网站的源或后端。
  2. 主机标头替换为网站的主机名,例如 example.com
  3. 允许转发所有 Cookie 和查询字符串。如果平台没有此选项,它可能会默认执行此操作。
  4. 添加指向您的代码植入服务器的其他源或后端。这可以是云服务提供商提供的网域,例如 metrics.run.app
  5. 主机标头替换成上述网域。允许转发所有 Cookie 和查询字符串。
  6. 添加 /metrics/* 等路径规则,以便将流量路由到代码植入服务器。
  7. 配置预留的服务器端代码植入路径,使其优先级高于默认规则。
  8. 更新 DNS 以指向 CDN 或负载均衡器(如果尚未更新)。DNS 更新可能需要一段时间才能完成传播。
  9. 访问您刚刚设置的网域上的 /healthy 端点,例如 https://example.com/metrics/healthy。此时您应该会看到 ok

3. 在 Google 跟踪代码管理器中更新服务器网址

您需要更新服务器容器配置,以便它可以识别路径前缀并正确处理请求。

如需更新为新端点,请执行以下操作:

  1. 打开 Google 跟踪代码管理器
  2. 打开在与网站相同的源上设置的服务器容器。
  3. 管理标签页 > 容器设置下,移除所有以前的网址。此操作为必要操作,因为所有的服务器容器网址必须共用同一路径。
  4. 点击添加网址,然后输入包含路径前缀的网址。
  5. 点击保存,然后返回到您的工作区。
  6. 点击预览按钮启动新的调试会话,并在单独的标签页上发送请求。
  7. 点击已发送的请求。确保您的客户端处理了传入的请求。

排查常见问题

  1. 预览时未显示传入的请求
    1. 前往您云项目的 Logs Explorer。验证服务器端代码植入部署是否在接收流量。如果没有,请按照第 1 步中的说明操作。
    2. 确认 CDN 或负载均衡器在转发 Cookie。
    3. 验证您是否只有一个预览服务器,同时代码植入服务器是否设置了 PREVIEW_SERVER_URL
    4. 前往“PREVIEW_SERVER_URL + /healthy”,确认预览服务器正在运行。此时您应该会看到 ok
  2. 客户端未处理请求 - 在容器设置中更新网址,以便使用预留的路径。如果网址不包含预留的路径或路径不同,客户端将无法正常工作。