INTEGRITY Документация

Маршрутизация к частным сервисам из Workers

В этом примере показано, как использовать Workers VPC для создания централизованного шлюза, который маршрутизирует запросы на основе путей URL, обеспечивает аутентификацию и ограничение частоты запросов, а также распределяет нагрузку между внутренними сервисами.

Предварительные требования

1. Создайте VPC Services

Сначала создайте сервисы для внутренних API с помощью hostname:

# Create user service
npx wrangler vpc service create user-service \
  --type http \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --hostname user-api.internal.example.com

# Create orders service
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-28",
	"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-28"

[[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.js
export default {
	async fetch(request, env, ctx) {
		const url = new URL(request.url);

		// Route to internal services
		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
# Test user service requests
curl https://api-gateway.workers.dev/api/users

# Test orders service requests
curl https://api-gateway.workers.dev/api/orders

Следующие шаги