设置代理服务器路由

本文档面向希望通过代理服务器转送所有服务器端代码植入流量的开发者。

准备工作

在设置代理服务器转送前,请确保您满足以下条件:

  • 有一个已部署在 Cloud Run 上或通过手动设置部署的服务器容器。

  • 部署了一个支持 HTTP CONNECT 请求的代理服务器

  • 能够将来自代理服务器的特定出站流量列入许可名单,例如使用 VPC防火墙或代理访问控制列表 (ACL)。

配置代理服务器转送

Cloud Run

如要将流量转发到 Cloud Run 部署的代理,请按以下步骤操作:

  1. 打开 Cloud Run
  2. 选择您的服务器端代码植入 Cloud Run 实例。
  3. 点击 修改和部署新的修订版本。此时会显示部署修订版本界面。
  4. 容器下,选择您的服务器容器。此时会打开一个显示容器设置的新界面。
  5. 如要扩展服务配置,请选择变量和密钥标签页。点击添加变量按钮,然后添加以下环境变量:

    1. 名称HTTP_PROXY
    2. :代理服务器的 URI(例如 https://proxy.example.com:3333http://32.12.83.10
  6. 点击完成

  7. 确认修订版本并点击部署

手动部署

如要将流量转发到手动部署的代理,请按以下步骤操作:

  1. 定义一个 Docker 映像可访问的环境变量:

    1. 名称HTTP_PROXY
    2. :代理服务器的 URI(例如 https://proxy.example.comhttp://32.12.83.10:1234
  2. 使用新的环境变量运行 Docker 映像。

    docker run -p 8080:8080 \
    -e CONTAINER_CONFIG=CONTAINER_CONFIG \
    -e HTTP_PROXY=PROXY_URL \
    gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
    

结果:您的服务器端代码植入部署会将所有出站流量发送到您在环境变量中指定的代理端点。

验证代理服务器设置

如要验证代理请求设置,请同时检查 Google 跟踪代码管理器和代理服务器配置。

如要验证服务器容器代理请求,请按以下步骤操作:

  1. 打开 Google 跟踪代码管理器

  2. 打开您的服务器容器。

  3. 打开预览模式。在请求标签页中:

    1. 确保您的客户端会声明传入请求。
    2. 确保您的代码和变量成功发送传出 HTTP 请求。
    3. 如要检查请求是否通过代理服务器发送,请点击 HTTP 请求,以查看 HTTP 请求详细信息

如要验证您的代理设置,请按以下步骤操作:

  1. 检查您的网络和代理服务器日志。您至少应该能看到成功发送到以下端点的请求:
  2. 检查是否有向其他端点发出的请求。
  3. 根据您使用的服务器端代码植入功能,您也可能会看到向其他端点发出的请求,例如 www.google-analytics.combigquery.googleapis.com 或第三方端点。将代码植入设置所需的任何其他端点列入许可名单。

可选:将来自代理服务器的出站流量列入许可名单

如果您阻止来自您的网络或代理服务器的出站流量,则必须将 Google 跟踪代码管理器网域列入许可名单,代码植入服务器实例才能正常运行。将出站流量列入许可名单的方式取决于您的网络环境和代理软件。在开始将端点列入许可名单前,请确保您已了解自己的网络拓扑。

以下网域可用于提取、预览和调试您的 Google 跟踪代码管理器容器:

  • https://www.googletagmanager.com
  • https://tagmanager.google.com
  • ${Preview server URL}

如果您将预览服务器托管在与代理服务器不同的网络上,或者具有限制性的网络规则,请将从代理到预览服务器的出站流量列入许可名单。预览服务器网址是在部署服务器容器时定义的。

可选:对代理服务器使用基本身份验证

如果贵组织要求进行身份验证,您可以对所有服务器类型使用基本身份验证。

如要使用基本身份验证,请按照以下格式将凭据(用户名/密码)添加到代理服务器网址中:

HTTP_PROXY=http(s)://USER_NAME:PASSWORD@PROXY_URL

向代理发送的每项请求都会将 Proxy-Authorization 标头中的用户名和密码设置为 Base64 值。

如果使用的是 Cloud Run,请将代理端点凭据存储到 Secret Manager 中。Secret Manager 会在启动时向 Cloud Run 授予对 Secret 的访问权限,并解析相应的值。了解如何在 Cloud Run 中配置 Secret

可选:为特定主机停用代理

借助 NO_PROXY 环境变量,您可以定义无法通过代理服务器发送的主机名列表(以英文逗号分隔)。

假设:NO_PROXY=example.com,169.254.169.254,diagnostics.example2.com:3131

服务器端跟踪代码管理器容器不会代理以下任一请求:

  • http://example.comhttps://sub.example.comhttps://other.example.com:123
  • http://169.254.169.254https://169.254.169.254http://169.254.169.254:123
  • http://diagonstics.example2.com:3131https://diagonstics.example2.com:3131