Skip to content

servless/vpcsite

Repository files navigation

VPC Site Proxy

基于 Cloudflare Workers 的私有网络 (VPC) 动态站点代理服务。通过 Cloudflare KV 实现无需重新部署代码即可动态管理多个站点和后端路由。

部署

Deploy to Cloudflare Workers

核心特性

  • 动态路由:基于域名 (Hostname) 动态匹配后端服务器。
  • KV 存储:配置存储于 Workers KV,读取性能极高且支持即时更新。
  • VPC 集成:通过 Cloudflare VPC Service 访问内网资源。
  • 无状态部署:代码逻辑与业务配置分离。

快速开始

1. 初始化 KV 空间

在 Cloudflare 控制台或通过命令行创建一个 KV 命名空间,并将其 ID 填入 wrangler.jsonckv_namespaces 部分。

npx wrangler kv namespace create VPCSERVICE

2. 配置说明

本项目使用 KV 存储站点映射关系。Key 的格式为 site:your-domain.com,Value 为 JSON 字符串。

配置项说明:

  • host: 目标内网服务器的 IP 或 Hostname。
  • port: 目标端口。
  • vpc: wrangler.jsonc 中定义的 VPC Service 绑定名称(如 VPC_SERVICE_OS_2)。

3. 如何添加/更新站点

无需重新部署代码,只需更新 KV 数据:

# 使用命令行更新(推荐)
npx wrangler kv key put --binding=VPCSERVICE "site:api.example.com" '{"host": "10.0.1.5", "port": "8080", "vpc": "VPC_SERVICE_OS_2"}'

4. 部署服务

确保 wrangler.jsonc 中的 account_id 和 KV id 已正确配置。

npm run deploy

项目结构

  • src/index.ts: 核心代理逻辑。
  • wrangler.jsonc: Cloudflare Workers 配置文件,包含 VPC 和 KV 绑定。
  • test/: 集成测试用例。

故障排查

  • 404 Not Found: 表示 KV 中没有找到对应域名的配置。请检查 KV 中的 Key 是否以 site: 开头且域名拼写正确。
  • 500 Internal Server Error: 通常是指定的 VPC 绑定名称在 wrangler.jsonc 中不存在。

仓库镜像

MyCodeGitCodeGitHub

About

VPC Site Proxy

Resources

Stars

Watchers

Forks