一、简介
前段时间在我的威联通NAS上搭建了个小笔记,由于没有固定IP,只能使用花生壳动态域名,域名比较难记。
http://**t.oicp.net:65530
http://**t.oicp.net:65530/vip.html #首页及资源访问
二、需求
1、使用Cloudflare免费的Workers,当访问 https://note.*.workers.dev/vip.html 时,能够“跳转"到家里的目标资源,并且隐藏 源URL;
2、绑定自己的域名,并且使用CF CDN (如有ICP备案,用腾讯云CDN更省事,回源地址直接填写花生壳的域名和端口,不用这么折腾);
3、动态IP更新完成后,仍能正常访问。
三、实现
- 隐形跳转
在Cloudflare Workers 中使用代理(即反向代理),通过代理请求并将响应返回给用户,用户只能看到 https://note.*.workers.dev/,但实际上它是在请求另一个服务器上的资源。 - 文件访问的透明代理
在 Workers 中使用 fetch() 来转发请求并返回文件内容。
这样,虽然用户访问的是 https://note..workers.dev/vip.html,但实际上从 http://*t.oicp.net:65530/vip.html 拉取并展示内容。
3、完整代码示例
以下是实现上述功能的代码:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
// 目标服务器的基础URL
const targetOrigin = 'http://**t.oicp.net:65530';
// 获取原始请求的路径和查询字符串
const { pathname, search } = new URL(request.url);
// 构建目标URL
const targetUrl = new URL(pathname + search, targetOrigin);
// 复制原始请求的方法、头信息等,并修改为目标URL发起请求
const response = await fetch(targetUrl.href, request);
// 返回响应给客户端
return new Response(response.body, response);
}
使用Cloudflare Workers 反代花生壳动态域名 达到在家建站的目的
绑定自己的域名后,就能实现所需功能了:
使用Cloudflare Workers 反代花生壳动态域名 达到在家建站的目的
解释:
隐形跳转: 用户访问 https://note..workers.dev/vip.html 时,Workers 会将请求转发到 http://*t.oicp.net:65530/vip.html,并将响应返回给用户,地址栏不会暴露源 URL。
文件代理: 在 targetUrl 中动态构造目标网站的 URL(包括路径和查询字符串),然后用 fetch() 请求目标 URL 的内容。
无自动重定向: 使用 redirect: 'manual' 可以避免如果目标页面存在重定向时,自动跳转到目标地址,从而保持原始的 URL。
注意事项:
如果目标站点启用了 CORS(跨域资源共享),需要在响应中添加适当的 CORS 头来避免浏览器的安全限制。
你也可以根据需要设置缓存头、Cookie 或其他请求头信息,以便更好地处理用户请求。
有什么副使用,目前还未知,最大的优点就是完全免费,此代码许多是AI写的,如有不懂直接问AI。