← Cloudflare Workers VPC / workers-vpc / examples
Подключите Workers к Cloudflare Mesh
В этом примере показано, как использовать привязку VPC Network с Cloudflare Mesh (ранее WARP Connector) для подключения к любому приватному сервису в вашем аккаунте из Worker: без предварительной регистрации отдельных хостов и указания UUID туннеля Cloudflare Tunnel.
При привязке к Cloudflare Mesh с помощью network_id: "cf1:network", ваш Worker может обращаться к любому узлу Mesh, клиентскому устройству, подсети или маршруту по имени хоста, объявленному через Cloudflare Tunnel или Cloudflare Mesh, а также к назначению, подключённому через Cloudflare WAN через точку входа (GRE, IPsec или CNI).
Предварительные требования
- A Cloudflare Mesh узел, подключенный к вашей приватной сети
- Частные сервисы, работающие за вашим узлом Mesh (например, внутренний API, база данных или веб-приложение)
1. Настройте Worker
Привяжите Worker к Cloudflare Mesh с помощью network_id: "cf1:network" в конфигурации 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Благодаря этой единственной привязке ваш Worker может обращаться к любой службе во всех Cloudflare Tunnels, узлах Mesh и точках входа Cloudflare WAN в вашем аккаунте.
2. Реализуйте Worker
Используйте привязку VPC Network для доступа к сервисам по приватному IP-адресу. В настоящее время Cloudflare Mesh поддерживает только маршрутизацию на основе IP-адресов.
// 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 });
}
},
};В отличие от Службы VPC, URL, который вы передаёте в fetch() или адрес, который вы передаёте в connect() определяет фактический адрес назначения. Вы можете обращаться к любому IP-адресу и порту, доступным через вашу сеть Mesh, без создания отдельных привязок для каждого сервиса.
TCP-соединения
Также можно использовать connect() чтобы открывать необработанные TCP сокеты к службам, не использующим HTTP, через ту же привязку:
// 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. Разверните и протестируйте
Разверните Worker и убедитесь, что он может обращаться к вашим приватным сервисам:
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Следующие шаги
- Подробнее о Сети VPC параметры конфигурации
- См. Workers Binding API справочник
- Настройте Cloudflare Mesh для вашего аккаунта
- Изучите другие примеры