Gemini

中国国内访问 Google Gemini AI API 的三种方案全攻略

作者: Corwen // 2026-01-13

随着 Google Gemini 模型的不断迭代,越来越多的开发者希望将其集成到自己的应用中。然而,对于中国国内的开发者来说,直接调用 generativelanguage.googleapis.com 往往面临网络阻断或 IP 限制的问题。

本文将为你详细介绍三种主流的解决方案,无论你是追求零成本的个人开发者,还是拥有自有服务器的团队,都能找到适合你的路径。


方案一:Cloudflare Workers 搭建 Serverless 代理(🌟 最推荐)

这是最轻量、成本最低(通常免费)且对开发者最友好的方案。利用 Cloudflare 遍布全球的边缘网络,我们可以部署一段简单的代码,将请求转发给 Google。

为什么选择它?

  • 免费:每天 10 万次请求额度,个人使用绰绰有余。
  • 无服务器:无需维护 VPS,无需关心系统运维。
  • 解决跨域:在代码层面直接解决 Web 前端的 CORS 问题。

操作步骤

  1. 准备工作

    • 获取 Google AI API Key。
    • 注册 Cloudflare 账号。
    • 一个托管在 Cloudflare 上的自定义域名(关键:默认的 workers.dev 域名在国内无法访问)。
  2. 创建 Worker

    • 登录 Cloudflare 后台 -> Workers & Pages -> Create Application -> Create Worker -> Deploy
  3. 部署代码

    • 点击 Edit code,粘贴以下支持跨域的代理代码:
// 设置 Google Gemini API 的基础地址
const UPSTREAM_URL = 'https://generativelanguage.googleapis.com';

// 定义允许跨域的来源,"*" 代表允许所有,生产环境建议换成你的具体前端域名
const CORS_HEADERS = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
  'Access-Control-Allow-Headers': 'Content-Type, Authorization, x-goog-api-client, x-goog-api-key',
};

export default {
  async fetch(request, env, ctx) {
    // 1. 处理 OPTIONS 预检请求 (浏览器跨域必须)
    if (request.method === 'OPTIONS') {
      return new Response(null, {
        headers: CORS_HEADERS,
      });
    }

    // 2. 解析请求 URL
    const url = new URL(request.url);

    // 3. 构造新的目标 URL
    // 保持路径 (pathname) 和查询参数 (search) 不变,只替换域名
    const newUrl = UPSTREAM_URL + url.pathname + url.search;

    // 4. 创建新的 Request 对象
    // 注意:我们需要复制原始请求的方法、头信息和主体
    const newRequest = new Request(newUrl, {
      method: request.method,
      headers: request.headers,
      body: request.body,
    });

    // 5. 可以在这里强制添加 API Key (可选,如果不想在前端暴露 Key)
    // if (!newRequest.headers.has('x-goog-api-key')) {
    //    newRequest.headers.set('x-goog-api-key', env.GEMINI_API_KEY);
    // }

    try {
      // 6. 发送请求给 Google
      const response = await fetch(newRequest);

      // 7. 处理响应
      // 创建一个新的 Response 对象,以便我们可以修改响应头 (添加 CORS)
      const newResponse = new Response(response.body, response);

      // 8. 设置 CORS 响应头
      Object.keys(CORS_HEADERS).forEach((key) => {
        newResponse.headers.set(key, CORS_HEADERS[key]);
      });

      return newResponse;

    } catch (e) {
      return new Response(JSON.stringify({ error: e.message }), {
        status: 500,
        headers: { ...CORS_HEADERS, 'Content-Type': 'application/json' },
      });
    }
  },
};
  1. 绑定域名

    • 在 Worker 的 Settings -> Triggers -> Custom Domains 中,绑定你的二级域名(如 ai.yourdomain.com)。
  2. 使用

    • 将你代码或工具中的 Base URL 替换为 https://ai.yourdomain.com 即可。

方案二:使用海外 VPS 搭建 Nginx 反向代理(🛡️ 最稳健)

如果你已经拥有一台位于香港、新加坡、美国等地的海外 VPS,这是一个非常稳健的选择。它完全掌握在你手中,且可以灵活配置缓存、日志和访问控制。

为什么选择它?

  • 完全可控:数据流向清晰,不受第三方 Serverless 平台限制。
  • 高性能:Nginx 处理高并发连接的能力极强。
  • 资源复用:如果你已有海外服务器,无需额外支出。

Nginx 配置示例

编辑 Nginx 配置文件(通常位于 /etc/nginx/conf.d/),添加一个 server 块:

server {
    listen 443 ssl;
    server_name api.yourdomain.com; # 你的域名

    # SSL 证书配置 (建议使用 Certbot 自动签发)
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        # 代理到 Google API
        proxy_pass https://generativelanguage.googleapis.com;

        # 关键配置:必须开启 SSL Server Name,否则 Google 会拒绝连接
        proxy_ssl_server_name on;
        proxy_set_header Host generativelanguage.googleapis.com;

        # 传递客户端原本的 Authorization 或 API Key
        proxy_pass_header Authorization;
        proxy_pass_header x-goog-api-key;

        # 优化设置
        proxy_buffering off; # 处理流式输出 (Stream) 必开
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

配置完成后,使用 nginx -t 测试并 nginx -s reload 重载即可生效。


方案三:使用第三方 API 聚合/中转平台(⚡ 最省事)

如果你不想写代码,也不想维护服务器,只想立刻上手,那么使用第三方的 API 聚合服务(如 OpenRouter 或国内知名中转站)是最快的路径。

为什么选择它?

  • 开箱即用:无需任何网络配置,注册账号即可。
  • 多模型集成:通常一个 Key 即可调用 GPT-4, Claude 3, Gemini 等多种模型。

潜在风险与缺点

  • 数据隐私:API Key 和对话内容会经过第三方服务器,存在泄露风险(不建议用于处理敏感业务数据)。
  • 稳定性:服务的稳定性完全依赖于第三方,存在“跑路”或宕机风险。
  • 额外成本:除了 API 原生费用,通常还需支付中转溢价。

使用方法

在 SDK 初始化时,将 base_url 指向第三方提供的地址:

# 示例:使用 OpenRouter 或其他中转商
from openai import OpenAI

client = OpenAI(
    api_key="第三方平台的_KEY",
    base_url="https://第三方平台地址/v1"
)

总结与对比

方案 部署难度 成本 隐私安全 稳定性 适用场景
Cloudflare Workers 免费/极低 个人开发、初创产品、Demo 演示
VPS + Nginx 服务器费用 最高 极高 团队项目、对可控性要求高的应用
第三方聚合平台 较高 (含溢价) 快速测试、不想折腾技术的用户

最终建议

对于大多数独立开发者和程序员(如 Corwen 你),方案一 (Cloudflare Workers) 是性价比最高的选择。它既保护了数据隐私(代码自持),又无需支付服务器费用,且维护成本极低。

返回列表

评论区

正在加载评论系统...