基于 Cloudflare Workers 的私有网络 (VPC) 动态站点代理服务。通过 Cloudflare KV 实现无需重新部署代码即可动态管理多个站点和后端路由。
- 动态路由:基于域名 (Hostname) 动态匹配后端服务器。
- KV 存储:配置存储于 Workers KV,读取性能极高且支持即时更新。
- VPC 集成:通过 Cloudflare VPC Service 访问内网资源。
- 无状态部署:代码逻辑与业务配置分离。
访问 https://dash.cloudflare.com/<>/workers/vpc/services , 依次点击 Create -> Create VPC Service。
# Service name:服务名(随便填)
# Tunnel:选择上述创建的 Tunnel 服务
# Host or IP address:目标服务所在的内网 IP(相对于 Tunnel 服务部署位置访问本 Service 的访问方式)
# Ports:选择或自定义指定本服务的端口使用命令行
npx wrangler vpc service create my-private-api \
--type http \
--tunnel-id <YOUR_TUNNEL_ID> \
--hostname <YOUR_HOSTNAME> \
--http-port <PORT> \
--https-port <PORT>或者 IP 方式
npx wrangler vpc service create my-private-api \
--type http \
--tunnel-id <YOUR_TUNNEL_ID> \
--ipv4 <YOUR_IPV4_ADDRESS> \
--ipv6 <YOUR_IPV6_ADDRESS> \
--http-port <PORT> \
--https-port <PORT>根据文档创建 Workers https://developers.cloudflare.com/workers-vpc/get-started/
- 初始化项目
npm create cloudflare@latest -- vpcsite- 依次选择
For What would you like to start with? -> Hello World example.
For Which template would you like to use? -> Worker only.
For Which language do you want to use? -> TypeScript.
For Do you want to use git for version control? -> Yes.
For Do you want to deploy your application? -> No (we will be making some changes before deploying).- 进入项目
cd vpcsite- 将上述获取到的 VPC Service (
YOUR_SERVICE_ID)信息填入配置文件wrangler.jsonc
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "workers-vpc-app",
"main": "src/index.ts",
"compatibility_date": "2026-02-05",
+ "vpc_services": [
+ {
+ "binding": "VPC_SERVICE",
+ "service_id": "<YOUR_SERVICE_ID>"
+ }
+ ]
}在 Cloudflare 控制台或通过命令行创建一个 KV 命名空间,并将其 ID 填入 wrangler.jsonc 的 kv_namespaces 部分。
npx wrangler kv namespace create VPCSERVICE本项目使用 KV 存储站点映射关系。Key 的格式为 site:your-domain.com,Value 为 JSON 字符串。
配置项说明:
host: 目标内网服务器的 IP 或 Hostname。port: 目标端口。vpc:wrangler.jsonc中定义的 VPC Service 绑定名称(如VPC_SERVICE_OS_2)。
无需重新部署代码,只需更新 KV 数据:
# 使用命令行更新(推荐)
npx wrangler kv key put --binding=VPCSERVICE "site:api.example.com" '{"host": "10.0.1.5", "port": "8080", "vpc": "VPC_SERVICE_OS_2"}'确保 wrangler.jsonc 中的 account_id 和 KV id 已正确配置。
npm run deploysrc/index.ts: 核心代理逻辑。wrangler.jsonc: Cloudflare Workers 配置文件,包含 VPC 和 KV 绑定。test/: 集成测试用例。
- 404 Not Found: 表示 KV 中没有找到对应域名的配置。请检查 KV 中的 Key 是否以
site:开头且域名拼写正确。 - 500 Internal Server Error: 通常是指定的 VPC 绑定名称在
wrangler.jsonc中不存在。