本文档面向希望为广告客户部署 Google 代码网关的用户。我们建议使用面向广告客户的 Google 代码网关,以实现最持久的代码配置。
概览
借助面向广告客户的 Google 代码网关,您可以使用自己的第一方基础架构(托管在您网站的网域中)部署 Google 代码。此基础设施位于您的网站与 Google 服务之间。本文档中的设置将有助于您更好地衡量网站效果。您可以使用现有的内容分发网络 (CDN)、负载平衡器或 Web 服务器进行设置。
在标准 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/abjfo/ |
| 独立代码 2 | G-67890 |
/fjdso/ |
g-67890.fps.goog/fjdso/ |
| GTM 容器 | GTM-ABCDEF |
/cvfjk/ |
gtm-abcdef.fps.goog/cvfjk/ |
填写以下内容,以便在本文档中填充示例。
Your domain: example.com
Google tag ID: G-12345
Tag serving path: /metrics
如何处理多个代码或容器:
如果您的代码位于同一 GTM 容器中,则无需重复执行此设置。只需添加单个 Google 跟踪代码管理器容器,系统就会处理其中的所有代码。
如果您的代码位于不同的 GTM 容器中或未关联…您必须为每个实例重复执行此设置。这适用于以下情况:
- 您运行多个独立的 Google 跟踪代码管理器容器。
- 未包含在容器内的独立代码(例如 G-XXXXXX)。
执行此操作时,您必须为每个容器或标记指定一个唯一的标记传送路径。
2. 路由流量
此部分假定您的网站已在使用支持按路径路由流量的 CDN 或负载平衡器。
Google Cloud
您需要设置一个新的后端,用于查找网站访问者的大致地理位置,并在现有的外部应用负载平衡器中创建路由规则。
创建新的后端
在负载平衡器中,打开后端配置部分。创建新的后端服务。

使用地理定位信息配置新的后端服务:
- 指定一个名称,例如
measurement-be-svc。 - 将后端类型设置为互联网网络端点组。
- 将协议设置为 HTTPS,并将超时保留为预填充的值。
- 在后端下,点击互联网网络端点组下拉菜单,然后创建新的互联网网络端点组:
- 将网络端点组类型设置为互联网 NEG(全球、区域)。
- 将范围设置为全球。
- 将添加方式设置为完全限定域名和端口。
- 将完全限定域名设置为
G-12345.fps.goog。 - 点击创建以创建端点。
- 关闭网络端点组标签页,返回到新建后端服务标签页。
- 搜索新网络端点组的名称,然后选择该名称。
- 打开高级配置部分。添加以下自定义请求标头。
标头名称 标头值 HostG-12345.fps.googX-Forwarded-Country{client_region}X-Forwarded-Region{client_region_subdivision} - 查看其他设置。此集成不需要 Cloud CDN 和 Cloud Armor,因此您可以放心地停用这两项服务。
- 保存新的后端服务。
- 指定一个名称,例如
配置路由规则
在负载平衡器中,打开路由规则部分。
添加以下主机和路径规则:
主机 路径 后端 */metrics/*measurement-be-svc更新负载平衡器配置。
在浏览器中,前往
https://example.com/metrics/healthy,验证设置。该页面应包含文本ok。前往https://example.com/metrics/?validate_geo=healthy,验证是否包含地理位置信息。该页面应包含文本ok。
Cloudflare
如需在面向广告客户的 Google 代码网关中投放代码,您需要为新子网域创建 CNAME 条目,创建用于转发请求的源规则,并创建用于添加地理定位信息的转换规则。如需完成此设置,您需要拥有 Cloudflare 企业版方案。如果您没有企业版方案,请考虑改用 Cloudflare 自动设置。
创建 CNAME 条目
选择要为 CNAME 条目预留的子网域。填写以下内容,以便在本文档中填充示例。此 CNAME 永远不会在 Cloudflare 配置之外公开,因此名称是任意的。
CNAME subdomain: fps
- 在“DNS”标签页中,打开记录部分。
- 添加一条具有以下配置的新记录:
- 将类型设置为 CNAME。
- 将名称设置为
fps。 - 将目标设置为
G-12345.fps.goog。
- 保存 CNAME 记录。
创建来源规则
- 在“规则”标签页中,打开源规则,然后创建规则。
- 输入规则名称,例如
Route measurement。 - 根据自定义过滤表达式匹配传入的请求,然后点击修改表达式。
- 在构建器中粘贴以下表达式:
(http.host eq "example.com" and starts_with(http.request.uri.path, "/metrics")) - 将主机标头更新为重写为...
G-12345.fps.goog。 - 将 DNS 记录更新为替换为...
fps.example.com。 - 保存源规则。
- 如果还有其他源规则,请提高新创建的规则的位置,以便它在任何其他通配符路径之后运行。
- 在浏览器中,前往
https://example.com/metrics/healthy验证设置。该页面应显示ok。
包含地理位置信息
- 在“规则”标签页中,打开设置
- 启用添加访问者所在位置标头选项。
- 等待几分钟,让规则生效。在浏览器中,前往
https://example.com/metrics/?validate_geo=healthy,验证设置。该页面应显示ok。
Akamai
如需在面向广告客户的 Google 代码网关中投放代码,您需要在媒体资源中添加新规则,以转发请求并添加地理定位信息。
创建重定向规则
- 在 Property Manager 中创建新的交付配置版本
- 在媒体资源配置设置部分下,添加新的
Rule- 输入一个名称,例如
Route measurement
- 输入一个名称,例如
- 添加新的匹配
- 将“匹配”下拉菜单设置为路径和属于
- 将匹配值设置为
/metrics/*
- 添加新的行为
- 选择标准媒体资源行为,然后选择源服务器行为
- 将源服务器主机名设置为
G-12345.fps.goog - 将转发主机标头设置为原始主机名
- 保存新规则并部署更改
- 请务必先在预演环境中测试新的重定向规则,然后再将其发布到生产环境
- 提示:请确保您没有任何会修改或移除出站响应标头的规则。如果缺少
Content-Type响应标头,这可能会导致 Google 脚本失败。
包含地理位置信息
在媒体资源配置设置下,选择您的重定向规则(如上文所述创建)
添加新的行为
- 选择标准媒体资源行为,然后选择内容定位 (EdgeScape) 行为
- 将启用设置为
true
保存新行为并部署更改。
- 请务必先在预演环境中测试新的重定向规则,然后再将其发布到生产环境
在浏览器中,前往
https://example.com/metrics/healthy,验证设置。该页面应包含文本ok。前往https://example.com/metrics/?validate_geo=healthy,验证是否包含地理位置信息。该页面应包含文本ok。
Amazon CloudFront
若要通过面向广告客户的 Google 代码网关投放代码,您需要配置分发的行为,以转发请求并添加地理位置信息。
添加新来源
- 前往 Amazon Web Services (AWS) 中的 CloudFront 页面
- 选择 CloudFront 分配
- 在源标签页中,使用以下设置创建源:
- 将原始网域设置为
G-12345.fps.goog - 将协议设置为 仅限 HTTPS
- 将原始网域设置为
创建重定向行为
- 前往 AWS 中的 CloudFront 页面
- 选择 CloudFront 分配
- 在行为标签页上,使用以下设置创建新的行为:
- 将路径模式设置为
/metrics/* - 将来源和来源组设置为
G-12345.fps.goog - 将自动压缩对象设置为否
- 将查看器协议政策设置为 HTTPS only
- 将允许的 HTTP 方法设置为 GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE
- 在缓存键和源请求下,选择缓存政策和源请求政策
- 将缓存政策设置为 CachingDisabled
- 将源请求政策设置为 AllViewerExceptHostHeader
- 将路径模式设置为
- 在行为列表中,验证新行为的
Precedence是否高于所有其他行为- 如需更改
Precedence,请选择相应行为,然后选择上移按钮,直到该行为高于所有其他行为。
- 如需更改
- 在浏览器中,前往
https://example.com/metrics/healthy验证设置。该页面应显示ok。
包含地理位置信息
- 如需转发必要的地理位置信息,请在重定向行为中将 Headers 设置为 AllViewerExceptHostHeader。
- 如需查看 CloudFront 查看者位置标头的完整列表,请参阅这篇文章
- 等待几分钟,让您的分发版本完成部署。在浏览器中,前往
https://example.com/metrics/?validate_geo=healthy,验证设置。该页面应显示ok。
Fastly
如需在面向广告客户的 Google 代码网关中投放代码,您需要配置 Fastly CDN 服务以转发请求并添加地理位置信息。此过程涉及创建一个条件、一个主机和两个 VCL 代码段。
创建条件和主机
首先,您将设置一个条件来标识网关的请求,并设置一个主机来将这些请求路由到 Google。
创建具有以下设置的新条件:
- 类型:
Request - 名称:
Google Tag Gateway Path(或您喜欢的名称) - 应用条件:
req.url.path ~ "^/metrics"
- 类型:
使用以下设置创建新的主机:
- 主机名/地址:
fps.goog
- 主机名/地址:
使用以下其他设置配置新主机:
- 点击附加条件,然后选择您在第 1 步中创建的条件。
- 将替换主机设置为
fps.goog。 - 将其他设置保留为默认值。
- 点击更新以保存主机。
添加 Google 代码 ID 和地理定位标头
接下来,您将添加 VCL(Varnish 配置语言)代码段,以附加您的 Google 代码 ID 和客户的地理位置数据。您必须创建两个单独的代码段(一个用于 vcl_miss,另一个用于 vcl_pass),并且这两个代码段使用完全相同的代码。
在您的服务中,前往 VCL 代码段,然后创建一个包含以下字段的代码段:
- 名称:
Geo_MISS(或您喜欢的名称) - 展示位置:
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; }
- 名称:
创建另一个包含以下字段的代码段:
- 名称:
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(标记和路由):前往
https://example.com/metrics/healthy - 测试 2(地理定位):前往
https://example.com/metrics/?validate_geo=healthy
两个网页都应显示
ok- 测试 1(标记和路由):前往
其他
若要在面向广告客户的 Google 代码网关中投放代码,您需要将 CDN 或负载平衡器配置为将请求路由到面向广告客户的 Google 代码网关端点。
- 添加指向
G-12345.fps.goog的源或后端。 - 将主机标头替换为
G-12345.fps.goog。允许转发所有 Cookie 和查询字符串。 - 通过添加以下任一标头来传递访问者的地理定位信息:
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。
- 添加
/metrics/*的路径规则,以便将流量路由到面向广告客户的 Google 代码网关。 - 配置预留路径,使其优先级高于默认规则。
- 在浏览器中,前往
https://example.com/metrics/healthy,验证设置。该页面应显示ok。前往https://example.com/metrics/?validate_geo=healthy,验证是否包含地理位置信息。该页面应显示ok。
第 3 步:更新网站上的脚本以使用衡量路径
将网站每个网页上的脚本替换为以下脚本之一:
gtag.js
在 <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>
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 -->
测试效果衡量设置
如需测试衡量设置,请将容器配置为至少包含一个会触发的代码。
- 前往 Tag Assistant 并预览您的容器。
- 浏览您的网站,以触发事件。
在摘要 > 输出 > 已发送的命中标签页中,验证命中是否已路由到
/metrics。