Cloudflare 免费套餐功能很强,Workers、Tunnel、DNS 都能白嫖。这篇写怎么用它搭节点。
方案一:Workers Agent
原理:Workers 相当于一个运行在 Cloudflare 边缘的反代。请求先到 CF,CF 转发到你的源站。
创建 Worker → 部署以下代码:
const whitelist = new Set(['/v1/chat/completions', '/api/chat', '/health']);
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
if (!whitelist.has(url.pathname)) {
return new Response('Not Found', { status: 404 });
}
const target = new URL('http://你的源站IP:11434' + url.pathname + url.search);
const headers = new Headers(request.headers);
headers.set('Host', target.host);
return fetch(target, {
method: request.method,
headers: headers,
body: request.method !== 'GET' ? request.body : null,
});
}绑定自定义域名(Workers → 触发器 → 添加自定义域名),比如 ai-proxy.yourdomain.com。
这样你的本地 Ollama API 就能通过 CF 的 CDN 访问了。免费 Workers 每天 10 万次请求,个人用够了。
方案二:Cloudflare Tunnel
Tunnel 不需要开端口,不需要公网 IP,内网机器也能暴露。适合家里 NAS、公司电脑跑 Ollama 但没公网 IP 的情况。
在 Cloudflare 网页上 → Zero Trust → Networks → Tunnels → 创建 Tunnel → 选 Docker 安装方式:
docker run -d --name cloudflared
cloudflare/cloudflared:latest tunnel --no-autoupdate run
--token 你的TOKEN然后配置路由:Tunnel 设置 → Public Hostname → 添加:
- Subdomain: ai
- Domain: yourdomain.com
- Service: http://localhost:11434
访问 https://ai.yourdomain.com 就能到你的本地 Ollama。
Tunnel 的好处:不需要服务器有公网 IP,不需要开端口,不需要搞证书。坏处是走 CF 中转,速度比直连慢一些。
方案三:优选 IP
CF 的节点 IP 在国内速度差异很大。手动找一个快的:
# 用 ipip 或类似工具扫描,找一个延迟低的 CF IP
# 然后直接访问 https://你的域名 --resolve yourdomain.com:443:优选IP或者用 cf-checker 之类的工具批量扫。找到后改 hosts 文件或路由器 DNS 指定。
优选 IP 不稳定,CF 会换。建议加 cron 定期扫描,或者用自动优选脚本。
方案对比
| 方案 | 需要公网 IP | 需要域名 | 免费 | 延迟 |
|---|---|---|---|---|
| Workers Agent | 源站要有 | 是 | 是 | 看源站位置 |
| Tunnel | 不需要 | 是 | 是 | 较高(中转) |
| 优选 IP | 不需要 | 是 | 是 | 看选到的 IP |
三个方案可以叠加使用。Tunnel + 优选 IP 是目前内网穿透最稳的组合。