skip to content
XSD-Blog

实战指南:用一台海外 VPS + NPM 搭建 Antigravity 专属反代,彻底告别梯子与封区

/ 6 min read

Table of Contents

实战指南:用一台海外 VPS + NPM 搭建 Antigravity 专属反代,彻底告别梯子与封区

使用 Google Antigravity(包括其背后的 Claude 3.7 / 3.5 Sonnet 与 Gemini 3.8 / 3.7 系列)写代码体验非常优秀,但痛点也很明显:Google 对出口 IP 的地区风控极严。

如果依赖本机商业代理,经常会遇到节点地区不支持、节点频繁更换导致断流、甚至被风控封禁的问题。

其实最省心、也是体验最好的解法:用一台能正常访问 Google 的海外 VPS(如韩国、日本、美西),挂上 Nginx Proxy Manager (NPM) 做反向代理。

搭建完成后,本地电脑在完全不需要挂梯子的情况下直连反代域名,把 Antigravity 当国内原生服务用。

架构逻辑

链路非常简单直观:

  • 本地端:免代理直连,零延迟抖动,不吃本机分流与 TUN 规则。
  • VPS 端:负责 TLS 终止、SNI 伪装和 Host 改写,以原生海外白名单 IP 向 Google 发起握手。

准备工作

  1. 一台海外 VPS:能够直连访问 Google 服务的机器(推荐韩国、日本等低延迟机房,已装好 Docker 和 Nginx Proxy Manager)。
  2. 一个解析正常的域名:在 Cloudflare 或其他 DNS 控制台,将一个子域名(例如 agy.yourdomain.com)A 记录解析到你的海外 VPS IP(注意:如果在 Cloudflare,先关闭小黄云 Proxy 保持灰云直连)。

一、 Nginx Proxy Manager (NPM) 配置

登录 NPM 管理面板,点击 Hosts -> Proxy Hosts -> Add Proxy Host。

1. 详情页(Details)

  • Domain Names:输入你的解析域名(如 agy.yourdomain.com)
  • Scheme:https
  • Forward Hostname / IP:daily-cloudcode-pa.googleapis.com
  • Forward Port:443
  • Websockets Support:勾选开启
  • 其余开关默认即可。

2. 证书页(SSL)

  • SSL Certificate:选择申请新的 Let’s Encrypt 证书(或已有泛域名证书)
  • Force SSL:勾选开启
  • HTTP/2 Support:勾选开启
  • HSTS Enabled:勾选开启

3. 高级配置(Advanced)—— 最核心步骤

Google 后端网关(GFE)严格校验 TLS 握手名称与 Host 头部,如果不改写 SNI,上游会直接返回 502 或 404。另外,流式输出(SSE)和思考模型需要关闭缓冲并放宽超时。

在 Advanced 文本框中填入以下配置:

# Docker 容器内部 DNS 解析,关闭 IPv6 避免无路由导致超时
resolver 127.0.0.11 ipv6=off valid=300s;
# 匹配 Antigravity 的主要 RPC 路由
location ~ ^/v1internal: {
set $ag_upstream daily-cloudcode-pa.googleapis.com;
proxy_pass https://$ag_upstream;
# 关键:SNI 握手名称与 Host 头必须改写为 Google 原生域名
proxy_ssl_server_name on;
proxy_ssl_name daily-cloudcode-pa.googleapis.com;
proxy_set_header Host daily-cloudcode-pa.googleapis.com;
# 完整透传请求头与认证信息
proxy_set_header Authorization $http_authorization;
proxy_set_header Content-Type $http_content_type;
proxy_http_version 1.1;
proxy_set_header Connection "";
# 彻底关闭代理缓冲,保证流式响应(打字机效果)实时秒出
proxy_buffering off;
proxy_request_buffering off;
proxy_cache off;
chunked_transfer_encoding on;
# 超时时间拉长,防止 Opus Thinking / 长代码生成中途中断
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}

点击 Save 保存。

二、 连通性测试

在本地终端(无需开任何代理软件)直接执行以下命令,测试反代是否生效:

Terminal window
curl -sk -I -X POST https://agy.yourdomain.com/v1internal:fetchAvailableModels

预期返回:

HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=UTF-8
WWW-Authenticate: Bearer realm="https://accounts.google.com/"

返回体中能看到类似如下 Google 官方未授权报错:

{
"error": {
"code": 401,
"message": "Request is missing required authentication credential...",
"status": "UNAUTHENTICATED"
}
}

只要看到 401 Unauthorized 和 googleapis.com 特征,说明反向代理配置完全正确,请求已经成功打入 Google 官方服务器。

三、 本地开发工具配置与排坑

1. 配置 BaseURL

以常见工具(如 OpenCodex 或其他兼容 Antigravity 的插件)为例,找到配置文件(如 ~/.config/opencodex/config.json),将对应的 baseUrl 修改为你自建的反代地址:

{
"providers": {
"google-antigravity": {
"adapter": "google",
"baseUrl": "https://agy.yourdomain.com",
"authMode": "oauth"
}
}
}

2. 常见踩坑:Benchmark 虚拟地址警告(198.18.x.x)

如果你的本地电脑偶尔开着某些代理工具(Clash / TUN 模式),客户端可能会拦截并弹窗报错:

baseUrl hostname agy.yourdomain.com resolves to a benchmark address (::ffff:198.18.5.44);
set allowPrivateNetwork:true only for intentionally local/self-hosted providers
  • 原因 :本地代理软件的 Fake-IP 机制分配了保留网段(198.18.0.0/15),被开发工具当作了私网 SSRF 风险进行拦截。

  • 解决 :在配置中显式加上一行

    "allowPrivateNetwork": true

    即可解除保护:

{
"providers": {
"google-antigravity": {
"adapter": "google",
"baseUrl": "https://agy.yourdomain.com",
"allowPrivateNetwork": true
}
}
}

总结

整个搭建过程不需要复杂部署,纯靠 NPM 的图形化界面和几行 Nginx 规则即可搞定:

  1. 零代理依赖:本地日常敲代码不再需要常驻梯子;
  2. 连接极其稳定:避免了节点漂移触发 Google 风控封禁;
  3. 低延迟无感知:东亚 VPS 直连延迟低,流式响应几乎瞬间吐字。