跳转到内容
搜索文档

将 Worker 连接到 Cloudflare Mesh

最后更新 查看 MarkdownAgent 设置

本示例演示了如何使用 VPC Network 绑定和 Cloudflare Mesh(以前称为 WARP Connector),从 Worker 连接到账户中的任何私有服务 —— 而无需预先注册各个主机或指定 Cloudflare Tunnel UUID。

当使用 network_id: "cf1:network" 绑定到 Cloudflare Mesh 时,您的 Worker 可以访问通过 Cloudflare Tunnel 或 Cloudflare Mesh 发布的任何 Mesh 节点、客户端设备、子网或主机名路由,或者通过 Cloudflare WAN 入口(GRE、IPsec 或 CNI)连接的目标。

先决条件

  • 一个连接到您的私有网络的 Cloudflare Mesh 节点
  • 在您的 Mesh 节点后方运行的私有服务(例如内部 API、数据库或 Web 应用程序)

1. 配置您的 Worker

在您的 Wrangler 配置中使用 network_id: "cf1:network" 将您的 Worker 绑定到 Cloudflare Mesh:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "mesh-gateway",
	"main": "src/index.js",
	// Set this to today's date
	"compatibility_date": "2026-08-17",
	"vpc_networks": [
		{
			"binding": "MESH",
			"network_id": "cf1:network",
			"remote": true
		}
	]
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "mesh-gateway"
main = "src/index.js"
# Set this to today's date
compatibility_date = "2026-08-17"

[[vpc_networks]]
binding = "MESH"
network_id = "cf1:network"
remote = true

只需此单个绑定,您的 Worker 即可访问您账户中跨越所有 Cloudflare Tunnel、Mesh 节点和 Cloudflare WAN 入口的任何服务。

2. 实施 Worker

使用 VPC Network 绑定按私有 IP 地址访问服务。Cloudflare Mesh 目前仅支持基于 IP 的路由。

index.jsjs
// 您可以按 Mesh IP 或节点后方子网路由上的任何私有 IP 
// 直接将 Mesh 节点作为目标
const SERVICE_IP = "10.0.1.50";
const SERVICE_PORT = 8080;

export default {
	async fetch(request, env, ctx) {
		try {
			const response = await env.MESH.fetch(
				`http://${SERVICE_IP}:${SERVICE_PORT}/api/data`,
			);
			return response;
		} catch (error) {
			// 如果 VPC Network 无法连接到目标,fetch() 将抛出异常
			return new Response("Service unavailable", { status: 503 });
		}
	},
};

VPC Service 不同,传递给 fetch() 的 URL 或传递给 connect() 的地址将决定实际目的地。您可以通过您的 Mesh 网络访问任何可达的 IP 和端口,而无需为每项服务创建单独的绑定。

TCP 连接

您还可以使用 connect() 通过同一个绑定向非 HTTP 服务打开原始 TCP 套接字:

index.jsjs
// 您可以按 Mesh IP 或节点后方子网路由上的任何私有 IP 
// 直接将 Mesh 节点作为目标
const REDIS_IP = "10.0.1.50";
const REDIS_PORT = 6379;

export default {
	async fetch(request, env, ctx) {
		try {
			const socket = await env.MESH.connect(`${REDIS_IP}:${REDIS_PORT}`);

			const writer = socket.writable.getWriter();
			await writer.write(new TextEncoder().encode("PING\r\n"));
			await writer.close();

			return new Response(socket.readable);
		} catch (error) {
			// 如果 VPC Network 无法连接到目标,connect() 将抛出异常
			return new Response("Service unavailable", { status: 503 });
		}
	},
};

3. 部署并测试

部署您的 Worker 并验证其是否可以访问您的私有服务:

npx wrangler deploy
# 测试访问内部用户 API
curl https://mesh-gateway.workers.dev/api/users

# 测试按私有 IP 访问指标
curl https://mesh-gateway.workers.dev/api/metrics

后续步骤

这篇文档对您有帮助吗?