INTEGRITY Dokumentace

Připojení Workers ke Cloudflare Mesh

Tento příklad ukazuje, jak použít binding VPC Network s Cloudflare Mesh (dříve WARP Connector) k připojení k libovolné soukromé službě ve vašem účtu z Workeru, aniž byste museli předem registrovat jednotlivé hostitele nebo zadávat UUID Cloudflare Tunnel.

Když vytváříte vazbu na Cloudflare Mesh pomocí network_id: "cf1:network", váš Worker se může připojit k libovolnému uzlu Mesh, klientskému zařízení, podsíti nebo trase hostname oznámené prostřednictvím Cloudflare Tunnel nebo Cloudflare Mesh, případně k cíli připojenému přes Cloudflare WAN on-ramp (GRE, IPsec nebo CNI).

Předpoklady

1. Nakonfigurujte svůj Worker

Navažte svého Workera na Cloudflare Mesh pomocí network_id: "cf1:network" ve vaší konfiguraci Wrangler:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "mesh-gateway",
	"main": "src/index.js",
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"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-28"

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

Díky této jediné vazbě může váš Worker dosáhnout na libovolnou službu napříč všemi Cloudflare Tunnels, uzly Mesh a přístupovými body Cloudflare WAN ve vašem účtu.

2. Implementujte Worker

Pomocí bindingu VPC Network přistupujte ke službám podle privátní IP adresy. Cloudflare Mesh v současnosti podporuje pouze směrování na základě IP adres.

index.js
// You can target a Mesh node directly by its Mesh IP or any private IP
// on a subnet route behind the node
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) {
			// fetch() throws if the VPC Network cannot connect to the target
			return new Response("Service unavailable", { status: 503 });
		}
	},
};

Na rozdíl od VPC služby, adresa URL, kterou předáte do fetch() nebo adresu, kterou předáte do connect() určuje skutečný cíl. Můžete se tak dostat k libovolné IP adrese a portu dostupným přes vaši síť Mesh, aniž byste museli pro každou službu vytvářet samostatnou vazbu.

Připojení TCP

Můžete také použít connect() pro otevření syrových TCP soketů k jiným než HTTP službám přes stejný binding:

index.js
// You can target a Mesh node directly by its Mesh IP or any private IP
// on a subnet route behind the node
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) {
			// connect() throws if the VPC Network cannot connect to the target
			return new Response("Service unavailable", { status: 503 });
		}
	},
};

3. Nasaďte a otestujte

Nasaďte svého Workera a ověřte, že se dokáže připojit k vašim privátním službám:

npx wrangler deploy
# Test accessing the internal user API
curl https://mesh-gateway.workers.dev/api/users

# Test accessing metrics by private IP
curl https://mesh-gateway.workers.dev/api/metrics

Další kroky