当前位置

尝试CloudFlare的Workers

James Qi 在 2021年7月13日 - 14:57 提交

开始用CloudFlare后,留意到菜单中有一个明显的“Workers”菜单项,查看在线帮助文档,说是“在全球数以百计的 Cloudflare 数据中心中运行 JavaScript Service Workers。修改站点的 HTTP 请求和响应,发出并行请求或从边缘生成响应”,有一些简明的使用示例,还是比较清晰的。

这个Workers服务CloudFlare也提供了免费使用,只是在资源消耗方面做了一些限制,如果需要更大量的服务则可以付费购买,这也很合理。这种边缘计算也是未来的发展方向,ServerLess等概念也是很前沿、时髦的。

国内的百度云加速的菜单中也有“边缘计算”,但实际上不能使用,询问百度的客服说目前不提供。

在网上搜了一些CF的Workers用途,一些中文文章有介绍用于FQ、代理等的,或者一些滥用,也难怪百度暂时不开放给用户了。

而我们服务器的IP地址因为查询Whois过多,被RIPE欧洲区Whois服务器屏蔽了,本来准备换用其它服务器做中转,看到CF的Workers后觉得也可以尝试,把示范中的代码稍微做了一点修改:

addEventListener("fetch", (event) => {
  event.respondWith(
    handleRequest(event.request).catch(
      (err) => new Response(err.stack, { status: 500 })
    )
  );
});

/**
 * Many more examples available at:
 *   https://developers.cloudflare.com/workers/examples
 * @param {Request} request
 * @returns {Promise}
 */
async function handleRequest(request) {
  const { pathname } = new URL(request.url);

  if (pathname.startsWith("/api")) {
    return new Response(JSON.stringify({ pathname }), {
      headers: { "Content-Type": "application/json" },
    });
  }

  if (pathname.startsWith("/status")) {
    const httpStatusCode = Number(pathname.split("/")[2]);

    return Number.isInteger(httpStatusCode)
      ? fetch("https://http.cat/" + httpStatusCode)
      : new Response("That's not a valid HTTP status code.");
  }

  //return fetch("https://welcome.developers.workers.dev");
  return fetch("https://rdap-bootstrap.arin.net/bootstrap/ip" + pathname);
}

还不需要给出自己的路由,直接访问CF提供的子域名并带上查询IP地址参数 https://get-whois-json.example.workers.dev/2.2.2.2 ,很快就可以使用了,关于Whois Json数据可以参考我前面写的《Whois RDAP 注册数据访问协议 Registration Data Access Protocol》。

对于需要外部IP来做少量查询访问的情况,这真是一个非常方便、免费的办法。免费版10万次访问/天的数量对于小型使用场合也是足够了。

其实这方面我还是门外汉,简单看了一下资料、试了一下就可以用了,更多、更酷的应用方式还多得很,以后慢慢了解学习。

自由标签:

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。