
2026 实操指南:基于 Cloudflare Workers 搭建 Gemini API 反向代理 实现国内稳定访问
一、方案背景:跨境访问痛点与自建反代的价值
对于国内开发者而言,调用 Google Gemini 官方 API 普遍面临双重阻碍:一方面,受地区服务策略限制,官方 API 端点generativelanguage.googleapis.com在国内直连成功率极低;另一方面,跨境网络链路波动大,请求常出现 SSL 握手超时、响应延迟过高等问题,难以支撑常态化开发使用。
传统的 VPS 搭配 Nginx 反向代理方案,不仅需要支付服务器成本,还易因数据中心 IP 段触发 Google 平台风控,频繁出现 403、429 等访问异常。相比之下,基于 Cloudflare Workers 搭建自建反向代理,是兼顾成本、自由度与稳定性的折中方案:依托 Cloudflare 全球 200 余个边缘节点,无需自行维护服务器,免费额度可支持每日 10 万次请求,能够有效优化跨境访问的连通性,适合个人开发者与小型项目测试场景。
二、使用前需明确的三条核心红线
在部署前,需首先明确方案的能力边界与安全规则,避免后续出现风险:
- 密钥属性边界:AI Studio 生成的
AIza前缀密钥,是面向轻量调用的简易凭证,严禁嵌入前端或客户端代码公开暴露。据安全机构统计,公开网络中已发现近 3000 个暴露的活跃 Google API 密钥,一旦泄露将导致盗刷风险。 - 服务规则边界:反向代理仅解决网络连通性与跨域问题,不改变 Gemini API 的地区使用限制与服务条款,所有调用仍需遵守 Google 官方的使用规则。
- 免费额度边界:Workers 免费版存在每日请求数、CPU 运行时长的硬限制,超大体积请求(如高分辨率 base64 图片、超长上下文)易触发超时,使用时需做好请求体量控制。
三、分步实操:10 分钟完成反向代理部署
(一)第一步:获取官方 API 密钥
密钥需通过 Google AI Studio 正规渠道获取,具体步骤如下:
- 登录 Google AI Studio 平台;
- 在左侧菜单栏选择「Get API key」,可在新项目中创建密钥,或在已有项目下生成;
- 获取前缀为
AIzaSy的 API 密钥,妥善保管。
需注意:自 2025 年底起,Google 已对免费层调用配额进行调整,不同版本模型的免费额度存在差异。建议开发者在控制台配额页面确认可用额度与调用频率限制,避免因超额导致服务中断。
(二)第二步:Cloudflare 平台创建 Worker
- 登录 Cloudflare 控制台,进入左侧「Workers & Pages」板块;
- 点击「Create application」→「Create Worker」;
- 为 Worker 设置自定义名称,点击「Deploy」完成初步创建;
- 点击「Edit code」进入代码编辑页面,准备部署代理逻辑。
(三)第三步:部署核心代理代码
以下代码适配 2026 年最新接口规范,优化了参数拼接、流式响应透传、头部过滤等逻辑,可直接部署使用。代码支持 SSE 流式输出,兼容官方接口的核心能力。
javascript
运行
export default {
async fetch(request, env, ctx) {
// 1. 处理CORS预检请求
if (request.method === 'OPTIONS') {
return new Response(null, {
status: 204,
headers: cors(),
});
}
// 2. 从环境变量读取密钥,禁止硬编码在源码中
const API_KEY = env.GEMINI_API_KEY;
if (!API_KEY) {
return jsonErr('Missing GEMINI_API_KEY (set it in Worker Settings → Variables/Secrets)', 500);
}
// 3. 访问来源控制,上线后建议关闭全量允许,指定自有域名
const allowAll = true;
// 4. 构造目标官方API地址,路径映射到Google官方端点
const url = new URL(request.url);
// 仅允许官方API路径前缀,防止被滥用为通用转发
if (!url.pathname.startsWith('/v1beta/') && !url.pathname.startsWith('/v1/')) {
return jsonErr('bad path', 404);
}
url.hostname = 'generativelanguage.googleapis.com';
url.protocol = 'https:';
url.port = '';
// 统一通过查询参数追加鉴权密钥,避免重复拼接
url.searchParams.set('key', API_KEY);
// 5. 清洗请求头,构造转发请求
const cleanHeaders = filterHeaders(request.headers);
const fwd = new Request(url.toString(), {
method: request.method,
headers: cleanHeaders,
body: request.method !== 'GET' && request.method !== 'HEAD' ? request.body : undefined,
redirect: 'manual',
});
// 6. 转发并透传响应,完整支持流式输出
let resp;
try {
resp = await fetch(fwd);
} catch (e) {
return jsonErr('upstream error: ' + e.message, 502);
}
const out = new Response(resp.body, resp);
setCORS(out, allowAll);
return out;
},
};
/* ---------- 工具函数 ---------- */
function cors() {
return {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, HEAD',
'Access-Control-Allow-Headers': 'Content-Type, x-goog-api-key, Authorization',
'Access-Control-Max-Age': '86400',
};
}
function setCORS(r, allowAll) {
r.headers.set('Access-Control-Allow-Origin', allowAll ? '*' : 'https://你的域名.com');
}
function jsonErr(msg, status) {
return new Response(JSON.stringify({ error: msg }), {
status,
headers: { 'Content-Type': 'application/json' },
});
}
/**
* 过滤逐跳头部,避免Host头部冲突与转发异常
*/
function filterHeaders(h) {
const keep = new Headers();
const skip = new Set([
'host','connection','keep-alive','transfer-encoding','upgrade',
'proxy-authenticate','proxy-authorization','te','trailers','x-forwarded-for'
]);
for (const [k, v] of h.entries()) {
if (!skip.has(k.toLowerCase())) keep.set(k, v);
}
return keep;
}
(四)第四步:配置环境变量
密钥严禁直接写入代码文件,需通过 Cloudflare 的环境变量功能配置,步骤如下:
- 在 Worker 详情页进入「Settings」→「Variables」,推荐使用「Secrets」加密变量;
- 添加变量,键名为
GEMINI_API_KEY,值为从 AI Studio 获取的密钥。
加密配置后,密钥不会在代码与日志中明文显示,可大幅降低泄露风险。
(五)第五步:绑定自定义域名(强烈推荐)
默认的*.workers.dev域名在国内部分运营商网络下存在间歇性访问异常,建议绑定自有域名优化稳定性:
- 将自有域名的 DNS 托管至 Cloudflare;
- 在 Worker 的「Triggers」设置中添加自定义域名,例如
gemini.yourdomain.com; - 配置完成后,你的 API 基础地址将变为
https://gemini.yourdomain.com/v1beta/...。
(六)第六步:客户端调用适配
完成部署后,客户端仅需修改接口域名即可正常调用,无需大幅改造代码。Python 调用示例如下:
python
运行
import requests
# 替换为你的Worker地址或自定义域名
BASE = "https://gemini.yourdomain.com"
# 填写账号中可用的模型ID,建议使用官方稳定版本号
model = "gemini-2.5-flash-preview-04-17"
url = f"{BASE}/v1beta/models/{model}:generateContent"
payload = {
"contents": [
{"parts": [{"text": "用一句话解释什么是反向代理"}]}
]
}
# 密钥已在反代层统一追加,客户端无需重复传入
r = requests.post(url, json=payload, timeout=60)
print(r.json())
需注意:Gemini 模型的命名规则持续更新,早年的gemini-pro等旧名称多已失效,建议先调用/v1beta/models接口查询当前项目可用的模型 ID 列表,避免因模型名称错误导致 404。
四、常见避坑清单
部署与使用过程中,以下高频问题需重点规避:
- 密钥硬编码风险:严禁将 API 密钥写入源码并上传至公开代码仓库,必须通过环境变量加密配置,否则极易被盗刷。
- 参数拼接错误:不要手动拼接
?key=查询参数,使用searchParams.set方法可避免原参数被覆盖、重复拼接等问题。 - 重复传密钥:反代层已统一追加鉴权参数,客户端无需再在请求头或 URL 中重复传入密钥,避免造成逻辑混乱。
- 流式响应中断:长文本流式输出易出现中断,需将客户端超时时间设置为 60 秒以上;Worker 侧不要读取或缓存响应正文,避免破坏流式传输。
- 免费额度耗尽:频繁在线调试易快速耗尽每日免费请求额度,建议先在本地通过
wrangler dev工具测试,再部署至线上环境。 - 合规认知误区:反向代理仅优化网络连通性,不改变官方服务的地区使用规则与服务条款,需合规使用官方服务。
- 域名生效验证:绑定自定义域名后,需等待 TLS 证书生效,可先通过 curl 命令验证接口连通性,确认返回鉴权错误而非连接超时后,再替换业务代码中的接口地址。
五、更优选型:兼顾稳定与便捷的商业聚合服务
自建 Workers 反向代理适合具备一定动手能力、追求控制权的个人开发者,但在稳定性、合规性、服务支持等方面仍存在局限,无法满足生产级业务的需求。对于追求低接入门槛、高稳定性的开发者与企业用户,合规的 AI API 聚合服务是更省心的选择。
UseAIAPI 作为专业的全球 AI 大模型服务平台,全面覆盖 Gemini、Claude、GPT 系列、DeepSeek 等全球主流热门大模型,无需用户自行搭建代理、配置跨境环境,注册即可快速调用。平台接口兼容通用调用协议,原有代码仅需修改基础调用地址即可完成适配,接入成本极低。
针对企业级用户,UseAIAPI 可提供定制化企业级服务方案,搭配专属技术支持与稳定专线链路,全方位保障业务稳定运行。成本方面,依托规模化采购优势,平台推出专属优惠政策,资费最低可达官方定价的 50%,能够大幅降低高强度内容生成、大算力消耗场景下的使用成本,让用户无需为 Token 消耗过度顾虑,专注于业务开发与产品创新。
结语
自建 Cloudflare Workers 反向代理,是个人开发者在成本、自由度与可控性之间的均衡选择,它无法突破官方服务的地区规则限制,但能够将 “无法连通” 的痛点转化为 “稳定可用” 的基础能力,适合学习测试、小型项目等非生产场景。
对于生产级业务与追求省心体验的用户,合规成熟的商业聚合服务是更优解,无需投入运维精力,即可获得稳定、低价、有保障的大模型调用服务。用户可根据自身的使用场景与需求,选择最适配的接入方案。