← Cloudflare Workers VPC / workers-vpc
Начало работы
Это руководство проведёт вас через создание первого Workers VPC Service, что позволит вашему Worker обращаться к ресурсам в вашей приватной сети.
Вы создадите приложение Workers, создадите Tunnel в своей приватной сети для подключения к Cloudflare, а затем настроите VPC Services для служб в приватной сети, к которым хотите получить доступ из Workers.
Предварительные требования
Прежде чем начать, убедитесь, что вы выполнили следующее:
- Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
- Установка
Node.js↗.
менеджер версий Node.js
Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.
Кроме того, вам понадобится:
- Доступ к частной сети (ваша локальная сеть, AWS VPC, Azure VNet, GCP VPC или локальная инфраструктура)
- Connectivity Directory Bind роль для привязки к существующим VPC Services из Workers.
- Или Connectivity Directory Admin роль для создания VPC Services и привязки к ним из Workers.
1. Создайте новый проект Worker
Создайте новый проект Worker с помощью Wrangler:
npm create cloudflare@latest -- workers-vpc-appДля настройки выберите следующие параметры:
- Для С чего вы хотите начать?, выберите
Hello World example. - Для Какой шаблон вы хотите использовать?, выберите
Worker only. - Для Какой язык вы хотите использовать?, выберите
TypeScript. - Для Хотите использовать git для контроля версий?, выберите
Yes. - Для Хотите развернуть приложение?, выберите
No(мы внесём некоторые изменения перед развёртыванием).
Перейдите в каталог проекта:
cd workers-vpc-app2. Настройте Cloudflare Tunnel
Cloudflare Tunnel создаёт защищённое соединение между вашей частной сетью и Cloudflare. Этот туннель позволяет Workers безопасно обращаться к вашим частным ресурсам. Вы можете создать туннель на виртуальной машине или в контейнере в вашем внешнем облаке или даже на локальном компьютере, если это делается только в рамках этого руководства.
-
Перейдите в Панель управления Workers VPC ↗ и выберите Tunnels на вкладке.
-
Выберите Создание чтобы создать новый туннель.
-
Введите имя туннеля (например,
workers-vpc-tunnel) и выберите Сохранить туннель. -
Выберите операционную систему и архитектуру. Панель управления покажет инструкции по установке для вашей среды.
-
Следуйте приведённым командам, чтобы скачать и установить
cloudflared, и выполните команду установки сервиса с вашим уникальным токеном.
Панель управления подтвердит успешное подключение туннеля.
Настройка приватной сети для Cloudflare Tunnel
После подключения туннеля убедитесь, что он может обращаться к сервисам, которые должны быть доступны вашим Workers. Туннель нужно установить на машине, способной достичь внутренних ресурсов, которые вы хотите открыть для Workers VPC. Во внешних облаках это может означать настройку Access-Control-Lists, Security Groups или VPC Firewall Rules, чтобы туннель мог обращаться к нужным сервисам.
3. Создайте VPC Service
Теперь, когда туннель запущен, создайте VPC Service, чтобы Workers могли обращаться к вашим внутренним ресурсам:
-
Перейдите в Панель управления Workers VPC ↗ и выберите Службы VPC на вкладке.
-
Выберите Создание чтобы создать новый VPC Service.
-
Введите Имя сервиса для вашего VPC Service (например,
my-private-api). -
Выберите ваш туннель из Tunnel раскрывающийся список, или выберите Create Tunnel если вам нужно создать новый.
-
Введите Хост или IP-адрес вашего внутреннего сервиса (например,
localhost,internal-api.company.local, или10.0.1.50). -
Настройте Порты. Выберите один из вариантов:
- Использовать порты по умолчанию для стандартных HTTP (80) и HTTPS (443)
- Укажите значения портов для указания пользовательских портов HTTP и HTTPS
-
Настройте DNS-резолвер. Выберите один из вариантов:
- Использовать туннель как резолвер чтобы использовать встроенное в туннель разрешение DNS
- Пользовательский резолвер и введите IP-адрес вашего DNS-резолвера (например,
8.8.8.8)
-
Выберите Create service чтобы создать VPC Service.
В панели управления отобразится новый VPC Service с уникальным Service ID. Сохраните этот Service ID для следующего шага.
Для HTTP-сервиса:
npx wrangler vpc service create my-private-api \
--type http \
--tunnel-id <YOUR_TUNNEL_ID> \
--hostname <YOUR_HOSTNAME>Для TCP-сервиса (например, базы данных PostgreSQL):
npx wrangler vpc service create my-database \
--type tcp \
--tcp-port 5432 \
--app-protocol postgresql \
--tunnel-id <YOUR_TUNNEL_ID> \
--ipv4 <YOUR_IPV4_ADDRESS>Замените:
<YOUR_TUNNEL_ID>с идентификатором туннеля из шага 2<YOUR_HOSTNAME>с хостом вашего внутреннего сервиса (например,internal-api.company.local)<YOUR_IPV4_ADDRESS>с приватным IP-адресом вашего сервиса (например,10.0.1.50)
Вы также можете:
- Создавайте сервисы, используя IP-адреса, заменив
--hostname <YOUR_HOSTNAME>с--ipv4 <YOUR_IPV4_ADDRESS>,--ipv6 <YOUR_IPV6_ADDRESS>, или оба варианта для конфигурации с двойным стеком - Укажите пользовательские порты для HTTP-сервисов, добавив
--http-port <PORT>и/или--https-port <PORT>(например,--http-port 8080 --https-port 8443) - Задайте режим проверки TLS-сертификата с помощью
--cert-verification-mode(verify_full,verify_ca, илиdisabled)
Команда вернёт ID сервиса. Сохраните его для следующего шага.
Если возникают ошибки доступа, см. Необходимые роли.
4. Настройте Worker
Добавьте привязку VPC Service в файл конфигурации Wrangler:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "workers-vpc-app",
"main": "src/index.ts",
// Set this to today's date
"compatibility_date": "2026-08-28",
"vpc_services": [
{
"binding": "VPC_SERVICE",
"service_id": "<YOUR_SERVICE_ID>"
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "workers-vpc-app"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"
[[vpc_services]]
binding = "VPC_SERVICE"
service_id = "<YOUR_SERVICE_ID>"Замените <YOUR_SERVICE_ID> с идентификатором службы из шага 3.
5. Напишите код Worker
Обновите ваш Worker, чтобы использовать привязку VPC Service. В следующем примере:
export default {
async fetch(request, env, ctx): Promise<Response> {
const url = new URL(request.url);
// This is a simple proxy scenario.
// In this case, you will need to replace the URL with the proper protocol (http vs. https), hostname and port of the service.
// For example, this could be "http://localhost:1111", "http://192.0.0.1:3000", "https://my-internal-api.example.com"
const targetUrl = new URL(
`http://<ENTER_SERVICE_HOST>:<ENTER_SERVICE_PORT>${url.pathname}${url.search}`,
);
// Create new request with the target URL but preserve all other properties
const proxyRequest = new Request(targetUrl, {
method: request.method,
headers: request.headers,
body: request.body,
});
const response = await env.VPC_SERVICE.fetch(proxyRequest);
return response;
},
} satisfies ExportedHandler<Env>;6. Протестируйте локально
Тестируйте свой Worker локально. Вам нужно использовать удалённые VPC Services с помощью Удалённые привязки Workers как было настроено в вашем wrangler.jsonc файл конфигурации, либо с помощью npx wrangler dev --remote:
npx wrangler devПерейдите на http://localhost:8787 чтобы проверить подключение вашего Worker к приватной сети.
7. Развернуть Worker
После завершения тестирования разверните Worker:
npx wrangler deployТеперь ваш Worker развёрнут и может безопасно обращаться к ресурсам вашей приватной сети через Cloudflare Tunnel. Если у вас возникают ошибки прав доступа, см. Необходимые роли.
Следующие шаги
- Изучите параметры конфигурации для сложных сценариев настройки
- Настройка туннели высокой доступности для рабочей среды
- Просмотр руководства для конкретных платформ для AWS, Azure, GCP и Kubernetes
- Ознакомьтесь с примеры для распространенных сценариев использования