基于 CloudFlare Workers / Pages 的指定网站加速
-
拉取本仓库代码
-
安装模块
npm install -g wrangler
- 初始化数据库
# 创建数据库
wrangler d1 create fastsite复制生成的数据库信息到 wrangler.jsonc
✅ Successfully created DB 'fastsite' in region WEUR Created your new D1 database. { "d1_databases": [ { "binding": "DB", "database_name": "fastsite", "database_id": "4791dbb8-a06b-4980-9992-f51c51c47f70" } ] }
创建数据表结构文件 schema.sql,并填充数据。
# 导入数据结构(本地测试) wrangler d1 execute fastsite --env local --local --file=./schema.sql # 导入数据结构(远程服务) wrangler d1 execute fastsite --remote --file=./schema.sql
- 本地测试使用
--local,生产环境使用--remote
# 查询表结构 wrangler d1 execute fastsite --local --command="pragma table_info(fastsite)" # 查询数据表 wrangler d1 execute fastsite --local --command="SELECT * FROM fastsite" # 备份数据库 wrangler d1 export fastsite --local --file=./fastsite.sql # 添加数据 wrangler d1 execute fastsite --local --command="INSERT INTO fastsite (visit_url, target_url, description) VALUES ('http://localhost:8787', ' https://dv.acme-v02.api.pki.goog', 'Google CA')" wrangler d1 execute fastsite --local --command="INSERT INTO fastsite (visit_url, target_url, description) VALUES ('http://127.0.0.1:8787', ' https://dv.acme-v02.test-api.pki.goog', 'Google Test CA')" # 更新数据 wrangler d1 execute fastsite --local --command="UPDATE fastsite SET target_url = 'https://dv.acme-v02.api.pki.goog' WHERE id = 1" # 删除数据 wrangler d1 execute fastsite --local --command="DELETE FROM fastsite WHERE id = 1"
当 target_url 为 https://api.github.com 时,为避免触发 GitHub API 的速率限制(Rate Limit),建议配置 GITHUB_TOKEN。
前往 GitHub Personal Access Tokens 页面创建一个新的 Token(建议选择 Fine-grained tokens 或经典的 repo 权限)。
使用 wrangler 将 Token 存入 Cloudflare Workers 的 Secret 中:
wrangler secret put GITHUB_TOKEN
按照提示输入你的 Token 值。
在项目根目录创建 .dev.vars 文件(此文件已被 .gitignore 忽略):
GITHUB_TOKEN=你的_github_token
CREATE TABLE IF NOT EXISTS fastsite ( id INTEGER PRIMARY KEY, -- ID visit_url TEXT NOT NULL, -- 访问地址 target_url TEXT NOT NULL, -- 目标地址 description TEXT DEFAULT '' NULL -- 描述 );
visit_url为访问的网站地址(需要绑定域名到此服务)。target_url为加速的目标网站地址。description为网站描述。
npm run dev
从 CloudFlare 获取 CLOUDFLARE_API_TOKEN 值(编辑 Cloudflare Workers),并设置到项目。
https://github.com/<ORG>/dchere/settings/secrets/actions
-
注册 CloudFlare 账号,并且设置 Workers 域名 (比如:
abcd.workers.dev) -
安装 Wrangler 命令行工具。
npm install -g wrangler
-
登录
Wrangler(可能需要扶梯):# 登录,可能登录不成功 # 若登录不成功,可能需要使用代理。 wrangler login
-
拉取本项目:
git clone https://github.com/servless/fastsite.git
-
修改
wrangler.json文件中的name(fastsite)为服务名myfastsite(访问域名为:myfastsite.abcd.workers.dev)。 -
发布
wrangler deploy
发布成功将会显示对应的网址
Proxy environment variables detected. We'll use your proxy for fetch requests. ⛅️ wrangler 4.4.0 -------------------- Total Upload: 0.66 KiB / gzip: 0.35 KiB Uploaded myfastsite (1.38 sec) Published myfastsite (4.55 sec) https://myfastsite.abcd.workers.dev Current Deployment ID: xxxx.xxxx.xxxx.xxxx
由于某些原因,
workers.dev可能无法正常访问,建议绑定自有域名。 -
绑定域名
在 Compute (Workers) -> Workers & Pages -> Settings -> Domains & Routes -> Add -> Custom Domain(仅支持解析在 CF 的域名),按钮以绑定域名。
- 修改代码 [
pages/_worker.js]
-
登录请参考 Workers 中的本地部署的步骤
1~4 -
发布
wrangler pages deploy pages --project-name fastsite
发布成功将会显示对应的网址
▲さんかく [WARNING] Pages now has wrangler.toml support. We detected a configuration file at Ignoring configuration file for now, and proceeding with project deploy. To silence this warning, pass in --commit-dirty=true ✨ Success! Uploaded 0 files (11 already uploaded) (0.38 sec) ✨ Compiled Worker successfully ✨ Uploading Worker bundle 🌎 Deploying... ✨ Deployment complete! Take a peek over at https://2e4bd9c5.dcba.pages.dev
由于某些原因,
pages.dev可能无法正常访问,建议绑定自有域名。 -
绑定域名
在 Compute (Workers) -> Workers & Pages -> Custom domains -> Add Custom Domain(支持解析不在 CF 的域名),按钮以绑定域名。