GH GambleHub

Proxy inverso y enrutamiento

1) Rol de proxy inverso

Proxy reverso - «front line» de la plataforma: acepta TLS, distribuye el tráfico entre apstrim, aplica políticas de seguridad y rendimiento. El objetivo es una latencia mínima, un enrutamiento predecible y un rápido aislamiento de las instancias/zonas degradantes.

2) Capas y protocolos

L4: TCP/UDP proxy (SNI-based TLS passthrough, QUIC). Precio bajo, sin comprensión de HTTP.
L7: HTTP/1. 1–2–3, gRPC, WebSocket. Enrutamiento enriquecido (host, path, headers, cookies), transformaciones y caché.

Modelo TLS: Terminar en el perímetro (NGINX/Envoy), en el interior - mTLS/mesh. SNI permite hosts virtuales en una sola IP.

3) Estrategias de enrutamiento (L7)

1. Host-basado: por dominio ('api. brand. com '→ clúster' brand-api ').
2. Path-based: `/v1/payments` → `payments-svc`, `/v1/wallets` → `wallets-svc`.
3. Header-based: `X-Region: eu-central`, `X-Tenant: 42`, `User-Agent`/`Accept`.
4. Cookies: pruebas A/B, sesiones «pegajosas».
5. Weighted/Canary: porcentaje de tráfico para la nueva versión (1-5% → 100%).
6. Geo/ASN: por país/ASN enviamos a la región/RR más cercana.
7. Consistent hashing: enlace de clave (user_id/tenant_id) a la instancia → localizador de caché/pegajoso.
8. Shadow/Mirroring: copiamos el tráfico en un upstream «sombreado» sin afectar la respuesta (para pruebas de regresión).

4) Equilibrio y tolerancia a fallas

Algoritmos: round-robin, least-request, random, ring-hash (consistent).
Cheques de salud: activos (HTTP/TCP) + pasivos (por códigos/timeout).
Outlier ejection: un host temporalmente «noqueado» con mayor error/latencia.
Retries: limitado, con timeout per-try y jitter; no retraer métodos inseguros sin idempotencia.
Conexión pooling: mantener los grupos warm a los apstrim, limitar los máximos.

5) Rendimiento del perímetro

Almacenamiento en caché: por clave (method + host + path + Vary), condiciones 'ETag/If-None-Match', TTL y stale-while-revalidate.
Compresión: brotli/gzip para respuestas de texto.
HTTP/2/3: multiplexación, header-compression; verificar la compatibilidad WAF/IDS.
Request coalescing: captura solicitudes paralelas para la misma clave de caché.

6) Seguridad en el proxy

TLS: 1. 2 + (mejor que 1. 3), OCSP stapling, HSTS.
Filtros WAF/bot: antes de enrutar a app.
CORS/CSP/Fetch-Metadata: según las políticas.
Header-гигиена: `X-Forwarded-For/Proto`, `Forwarded`, `traceparent`; protección contra inyección de cabeza y sobreexposición.
Límites Body/headers: primeros 413/431 para patrones DoS.
mTLS para integraciones de partners y API internas.

7) Esquemas de deployas: canary/blue-green/version

Weighted routing на level-7 (1%, 5%, 25%, 50%, 100%).
Header-gate: incluir ficha por bandera/título (internal/testing).
Azul-verde: cambiar todo el DNS/route, rollback rápido.
Shadow: ejecución paralela de una nueva versión con registro de métricas/registros.

8) Sesiones Sticky y enrutamiento hash

Cookie-stickiness (`Set-Cookie: SRV=shard-a; Path=/; HttpOnly ') para cargas stateful.
Ring-hash/consistent por 'user _ id/tenant _ id' - Reducir las discapacidades cruzadas de la caché.
Advertencia: evitar la pegajosidad «eterna» para las cargas de escritura → hot-spot; use la cuota per-tenant.

9) Enrutamiento regional y geográfico

Anycast + geo-DNS para seleccionar el POP más cercano.
Header-override (por ejemplo, 'X-Region') para pruebas y depuración.
Armonizar con la localización de datos requerida legalmente (ruta por región/jurisdicción).

10) Observabilidad y control

Métricas RED: RPS, error-rate (por clases), latency p95/p99 per-route/cluster.
Outlier/health: número de ejectos/reencendidos, tasa de llamada lenta.
Registros: estructurados, sin PII; corea 'trace _ id '/' span _ id'.
Senderismo (OTel): durmiendo ingress→router→upstream; exemplars en gráficos p99.

11) Ejemplos de configuraciones

11. 1 NGINX: host/path/weighted + кэш

nginx map $http_x_canary $canary { default 0; "1" 1; }
upstream app_v1 { least_conn; server 10. 0. 0. 1:8080 max_fails=3 fail_timeout=10s; }
upstream app_v2 { least_conn; server 10. 0. 0. 2:8080; }

server {
listen 443 ssl http2;
server_name api. example. com;

Кэш proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=apicache:256m max_size=10g inactive=10m use_temp_path=off;

location /v1/ {
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Request-ID $request_id;
proxy_read_timeout 300ms; proxy_connect_timeout 100ms;

Weighted: 5% on v2 if canary = 1, otherwise 0%
set $backend app_v1;
if ($canary) { set $backend app_v2; }
proxy_pass http://$backend;
}

Static with cache location/assets/{
proxy_cache apicache;
proxy_cache_valid 200 10m;
add_header Cache-Control "public, max-age=600";
proxy_pass http://static_cluster;
}
}

11. 2 Envoy: header-routing, canary, outlier-ejection, mirroring

yaml static_resources:
clusters:
- name: svc_v1 type: STRICT_DNS lb_policy: LEAST_REQUEST outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50
- name: svc_v2 type: STRICT_DNS lb_policy: LEAST_REQUEST
- name: mirror_svc type: STRICT_DNS

listeners:
- name: https filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
route_config:
virtual_hosts:
- name: api domains: ["api. example. com"]
routes:
- match:
prefix: "/v1"
headers:
- name: "X-Region"
exact_match: "eu"
route:
cluster: svc_v1 timeout: 350ms retry_policy:
retry_on: connect-failure,reset,5xx num_retries: 1 per_try_timeout: 200ms request_mirror_policies:
- cluster: mirror_svc runtime_key: mirror. enabled
- match: { prefix: "/v1" }
route:
weighted_clusters:
clusters:
- name: svc_v1 weight: 95
- name: svc_v2 weight: 5

11. 3 Traefik: rules + middleware

yaml http:
routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1`)"
service: svc middlewares: [hsts, compress]
middlewares:
hsts:
headers:
stsSeconds: 31536000 stsIncludeSubdomains: true compress:
compress: {}
services:
svc:
weighted:
services:
- name: v1 weight: 95
- name: v2 weight: 5

11. 4 Kubernetes: Ingress + Manifiesto para Canarias (NGINX Ingress)

yaml apiVersion: networking. k8s. io/v1 kind: Ingress metadata:
name: api annotations:
nginx. ingress. kubernetes. io/canary: "true"
nginx. ingress. kubernetes. io/canary-weight: "5"
spec:
rules:
- host: api. example. com http:
paths:
- path: /v1 pathType: Prefix backend:
service:
name: svc-v1 port: { number: 8080 }

12) Transformaciones y compatibilidad

Normalización de las cabeceras/vías, censo de 'Ubicación', gestión de 'Cache-Control'.
gRPC ↔ HTTP/JSON a través de traductores (grpc-json-transcodificador).
WebSocket/HTTP2 actualizaciones: asegúrese de que el proxy omita 'Upgrade '/' Connection'.

13) Pruebas y escenarios de caos

Carga: bursts, mesetas largas, cuerpos «largos» (slow-POST).
Inyección de retardos/pérdidas a los aptrims → verificación de retries/timeout/outlier.
Métricas canarias: p95/p99, error-rate de la nueva versión vs antigua; rollback automático por SLO.
Shadow: comparación de respuestas (sampling) y lógica side-by-side.

14) Antipattern

Retraídas globales sin tener en cuenta la idempotencia y la desactivación → tomas y tormentas.
Sesiones de Sticky sin control de «caliente» chardos → distorsión de carga.
Ninguna health-checks/outlier-ejection → instancias «podridas» en la piscina.
Los encabezados/cuerpos ilimitados → el DoS más simple.
La mezcla de transformaciones y seguridad sin la versión de circuitos → regresiones inesperadas.
Una única clave de caché global sin 'Vary' → respuestas incorrectas.

15) Especificidad de iGaming/finanzas

Regionalidad: enrutamiento por jurisdicción del jugador/marca; aislamiento de las zonas de pago.
Rutas críticas (depósitos/retiros): tiempos cortos, una repetición, idempotencia; clústeres individuales.
PSP/KYC: grupos de upstream dedicados, políticas estrictas de retry/timeout, circuit-breaker, geo-pines.
Canales AB: experimentos seguros con pagos/límites sólo para el camino de lectura; write - a través de banderas y pequeños porcentajes.

16) Lista de comprobación prod

  • TLS 1. 2+/1. 3, OCSP stapling, HSTS; correctos 'X-Forwarded-'.
  • Reglas de enrutamiento claras: host/path/header/cookie; documentación.
  • Health-checks, outlier-ejection, per-try timeout, retraídas limitadas.
  • Weighted/canary + shadow; auto-rollback por SLO/alertas.
  • Caché/compresión/ETag; límites body/headers; request coalescing.
  • Logs/tracks con 'trace _ id'; métricas RED + outlier/health; dashboards per-route/cluster.
  • Filtros WAF/bot/CORS; protección contra oversize y slow-POST.
  • Sticky/consistent hashing donde sea necesario; Control de Hot Shards.
  • Las configuraciones se versionan, las migraciones son seguras, los secretos están en KMS/Vault.

17) TL; DR

Termine TLS en el perímetro y enrute en L7 por host/path/header/cookie. Para lanzamientos - weighted canary y shadow; para la sostenibilidad - health-checks, outlier-ejection, retries limitados con tiempo per-try. Utilice caché, compresión y consistent hashing donde mejore p95. Medir las señales rojas y el estado de los clústeres, mantener WAF y límites de tamaño. Para rutas de pago críticas: clústeres individuales, SLAs cortos y administración estricta de retraídas/idempotencias.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.