大家在使用Cloudflare做反向代理的时候会遇到一个问题,命名已经配置好了,但是还是访问不了,是因为Cloudflare的workers.dev域名
在中国大陆区域已经被污染无法访问,所以需要自有域名进行解析。
本文的主要内容有以下三部分
1、域名购买
2、cloudFlare账号注册及DNS服务器修改
3、cloudFlare worker创建及反向代理配置
1、域名购买
可以购买域名的网站有很多,有免费的,有付费的。
国外免费的我也试了好几个,但是都不行,也没摸到门道。
国内的大家可以用阿里云,腾讯云,首次申请个普通的域名也很便宜,一年十几块钱,还能接受啦
2、cloudFlare账号注册及DNS服务器修改
首先你注册一个Cloudflare的账号,官网地址是Cloudflare 中国官网 | 智能化云服务平台 | 免费CDN安全防护 | Cloudflare
注册很方便,Cloudflare上边也可以购买域名,但是价格比较贵了,最便宜的一年也得9刀左右
进入主页,点“添加站点”
填上你购买的域名,点continue
选Free的配置,你想氪金也没问题
到DNS界面后选择下一步,最后出现修改原域名DNS的界面,停留一下
修改自己域名的DNS
登录到阿里云的域名管理控制台,点击“管理”
点击DNS修改,修改DNS服务器,我这个是已经修改过了
把Cloudflare的DNS服务器地址填到这里
然后就是等待了,大概十几分钟就好了,远远用不了24小时,你就会收到邮件了
至此,你的域名已经绑定到Cloudflare上了
3、创建反向代理
我的目的很明确,我是要创建openapi的反向代理
回到Cloudflare首页,点击“Workers和Pages”,右上角“创建应用程序”
创建workers
输入worker的名称,点击部署
点编辑代码
把以下内容替换到worker.js中,点击右上角的“保存并部署”
代码来源于github开源工程GitHub - x-dr/chatgptProxyAPI: 🔥 使用cloudflare 搭建免费的 OpenAI api代理 ,解决网络无法访问问题。支持流式输出
const TELEGRAPH_URL = 'https://api.openai.com';
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url);
url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');
const modifiedRequest = new Request(url.toString(), {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});
const response = await fetch(modifiedRequest);
const modifiedResponse = new Response(response.body, response);
// 添加允许跨域访问的响应头
modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');
return modifiedResponse;
}
最后一步,替换自己的域名,回到worker的管理界面,点击触发器,添加自定义域
输入自己的域名,点击添加
然后需要等待一会
最终验证一下效果,在浏览器中输入你的域名,可以看到,已经代理到openai的服务器了,大功告成
Cloudflare每天有10w次的免费额度,对于个人来说,一般都够用了