Gemini API 反向代理实战指南(Nginx & CF Worker)
由于网络环境限制,直接在本地或国内服务器调用 Gemini API 常常会遇到连接超时的问题。
为了实现稳定调用,搭建一个反向代理是最主流的解决方案。
方案一:Nginx 反向代理(适合已有服务器的用户)
如果你手中已经有一台海外 VPS,使用 Nginx 转发请求是最稳健的选择。
在你的 Nginx 虚拟主机配置中加入以下内容:
Nginx Conf
server {
listen 80;
server_name your-domain.com; # 换成你的域名
location / {
# 允许跨域配置(可选,如果你是前端直接调)
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-goog-api-key' always;
if ($request_method = 'OPTIONS') {
return 204;
}
# 设置后端目标地址
proxy_pass https://generativelanguage.googleapis.com;
# 必须设置的 Header
proxy_set_header Host generativelanguage.googleapis.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 关键:禁用缓存,确保流式输出(Stream)正常工作
proxy_buffering off;
proxy_cache off;
proxy_http_version 1.1;
# 延长超时时间,防止长文本生成时连接断开
proxy_read_timeout 300s;
}
}
优点: 稳定、完全可控,适合生产环境。 缺点: 需维护服务器,且有固定成本。
方案二:Cloudflare Workers(小白/白嫖党首选)
如果你没有服务器,或者不想处理 SSL 证书,Cloudflare Worker 是“神级”替代品。
在 Cloudflare Worker 编辑器中粘贴以下逻辑:
JavaScript
export default {
async fetch(request, env) {
const url = new URL(request.url);
// 1. 将请求的目标替换为 Google 的 API 地址
const targetUrl = 'https://generativelanguage.googleapis.com' + url.pathname + url.search;
// 2. 复制原始请求的 Header,并进行必要修改
const newHeaders = new Headers(request.headers);
newHeaders.set('Host', 'generativelanguage.googleapis.com');
// 如果你想在 Worker 中直接注入 API Key(可选)
// newHeaders.set('x-goog-api-key', '你的_GEMINI_API_KEY');
// 3. 构建新的请求
const newRequest = new Request(targetUrl, {
method: request.method,
headers: newHeaders,
body: request.body,
redirect: 'follow'
});
// 4. 发送请求并返回响应
// 默认支持流式传输 (Streaming),无需额外配置
return await fetch(newRequest);
}
};
部署注意:
-
域名问题:默认的
*.workers.dev域名在部分地区依然无法访问,务必在设置中绑定自定义域名。- 增加一条路由:
Route gemini.yourdomain.com/*
- 增加一条路由:
-
安全性:如果不想在前端暴露 API Key,可以在 Worker 中通过
newHeaders.set('x-goog-api-key', 'YOUR_KEY')强制注入。
这些地区通常因为法律合规或制裁原因被排除在Google Gemini服务范围之外:
中国大陆、香港、澳门
朝鲜
伊朗
叙利亚
古巴
俄罗斯
克里米亚地区以及乌克兰受争议的其他部分地区
发表评论