跳转到内容
搜索文档

路由到 Worker 中的私有服务

最后更新 查看 MarkdownAgent 设置

本示例展示了如何使用 Workers VPC 创建一个集中式网关,该网关根据 URL 路径进行请求路由、提供身份验证和速率限制,并在内部服务之间进行负载均衡。

先决条件

  • 在您的 VPC/虚拟网络中运行的多个私有 API 或服务(我们将使用用户服务和订单服务)
  • 已配置并正在运行的 Cloudflare Tunnel(按照入门指南进行设置,或者通过仪表板创建隧道
  • 具有 Workers VPC 访问权限的 Workers 账户

1. 创建 VPC Service

首先,使用主机名为您的内部 API 创建服务:

# 创建用户服务
npx wrangler vpc service create user-service \
  --type http \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --hostname user-api.internal.example.com

# 创建订单服务
npx wrangler vpc service create order-service \
  --type http \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --hostname orders-api.internal.example.com

记下返回的服务 ID 供下一步使用。

2. 配置您的 Worker

更新您的 Wrangler 配置文件:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "api-gateway",
	"main": "src/index.js",
	// Set this to today's date
	"compatibility_date": "2026-08-17",
	"vpc_services": [
		{
			"binding": "USER_SERVICE",
			"service_id": "<YOUR_USER_SERVICE_ID>"
		},
		{
			"binding": "ORDER_SERVICE",
			"service_id": "<YOUR_ORDER_SERVICE_ID>"
		}
	]
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "api-gateway"
main = "src/index.js"
# Set this to today's date
compatibility_date = "2026-08-17"

[[vpc_services]]
binding = "USER_SERVICE"
service_id = "<YOUR_USER_SERVICE_ID>"

[[vpc_services]]
binding = "ORDER_SERVICE"
service_id = "<YOUR_ORDER_SERVICE_ID>"

3. 实施 Worker

在您的 Workers 代码中,使用 VPC Service 绑定将请求路由到适当的服务:

index.jsjs
export default {
	async fetch(request, env, ctx) {
		const url = new URL(request.url);

		// 路由到内部服务
		if (url.pathname.startsWith('/api/users')) {
			const response = await env.USER_SERVICE.fetch("https://user-api.internal.example.com" + url.pathname);
			return response;
		} else if (url.pathname.startsWith('/api/orders')) {
			const response = await env.ORDER_SERVICE.fetch("https://orders-api.internal.example.com" + url.pathname);
			return response;
		}

		return new Response('Not Found', { status: 404 });
	},
};

4. 部署并测试

现在,您可以部署并测试您的 Worker:

npx wrangler deploy
# 测试用户服务请求
curl https://api-gateway.workers.dev/api/users

# 测试订单服务请求
curl https://api-gateway.workers.dev/api/orders

后续步骤

这篇文档对您有帮助吗?