您在這裡

嘗試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 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。