From 1a9820660e5b3f6070528df6f61cd138663b98ff Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Fri, 26 Jun 2026 13:53:40 -0400 Subject: [PATCH] build with cloudflare worker --- docs/worker.js | 40 ++++++++++++++++++++++++++++++++++++++++ wrangler.toml | 22 ++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 docs/worker.js create mode 100644 wrangler.toml diff --git a/docs/worker.js b/docs/worker.js new file mode 100644 index 0000000..df1fec8 --- /dev/null +++ b/docs/worker.js @@ -0,0 +1,40 @@ +const BACKEND_ORIGIN = "http://test.stonex.sharkdat.com:9191"; +const API_PREFIX = "/prod-api"; + +export default { + async fetch(request, env, ctx) { + const url = new URL(request.url); + + if (!url.pathname.startsWith(API_PREFIX)) { + return new Response("Not Found", { status: 404 }); + } + + const forwardPath = url.pathname.slice(API_PREFIX.length) || "/"; + const targetUrl = new URL(forwardPath, BACKEND_ORIGIN); + targetUrl.search = url.search; + + const headers = new Headers(request.headers); + headers.delete("host"); + headers.delete("origin"); + headers.delete("referer"); + + headers.set("X-Forwarded-Host", url.host); + headers.set("X-Forwarded-Proto", url.protocol.replace(":", "")); + headers.set("X-Forwarded-Prefix", API_PREFIX); + + try { + return await fetch(targetUrl.toString(), { + method: request.method, + headers, + body: request.method === "GET" || request.method === "HEAD" + ? undefined + : request.body, + redirect: "manual" + }); + } catch (err) { + return new Response(`Worker fetch failed: ${err.message}`, { + status: 502 + }); + } + } +}; diff --git a/wrangler.toml b/wrangler.toml new file mode 100644 index 0000000..35f259a --- /dev/null +++ b/wrangler.toml @@ -0,0 +1,22 @@ +name = "docs-isharkfly-com" +main = "docs/worker.js" # Path to your Worker script logic +compatibility_date = "2026-06-25" + +[assets] +directory = "./.vitepress/dist" +binding = "ASSETS" + +[observability] +enabled = false +head_sampling_rate = 1 + +[observability.logs] +enabled = true +head_sampling_rate = 1 +persist = true +invocation_logs = true + +[observability.traces] +enabled = false +persist = true +head_sampling_rate = 1 -- 2.43.0