GH GambleHub

Reverse Proxy und Routing

1) Die Rolle des Reverse Proxy

Der Reverse Proxy ist die „Frontline“ der Plattform: Er akzeptiert TLS, verteilt den Datenverkehr auf Upstreams und wendet Sicherheits- und Leistungsrichtlinien an. Das Ziel ist eine minimale Latenz, vorhersagbares Routing und schnelle Isolation von degradierenden Instanzen/Zonen.

2) Schichten und Protokolle

L4: TCP/UDP proxy (SNI-based TLS passthrough, QUIC). Niedriger Preis, ohne HTTP-Verständnis.
L7: HTTP/1. 1–2–3, gRPC, WebSocket. Reichhaltiges Routing (Host, Pfad, Header, Cookies), Transformationen und Cache.

TLS-Modell: Terminierung am Umfang (NGINX/Envoy), innen mTLS/mesh. SNI ermöglicht virtuelle Hosts auf einer einzigen IP.

3) Routing-Strategien (L7)

1. Host-basiert: nach Domain ('api. brand. com '→ Cluster' 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. Cookie-basiert: A/B-Tests, „klebrige“ Sitzungen.
5. Weighted/Canary: Prozentsatz des Datenverkehrs auf die neue Version (1-5% → 100%).
6. Geo/ASN: nach Land/ASN an die nächstgelegene RR/Region senden.
7. Consistent Hashing: Bindung des Schlüssels (user_id/tenant_id) an die Instanz → Cache-Localite/Klebrigkeit.
8. Shadow/Mirroring: Kopieren Sie den Verkehr in einen „Schatten“ -Upstream, ohne die Antwort zu beeinflussen (für Regressionstests).

4) Auswuchten und Fehlertoleranz

Algorithmen: round-robin, least-request, random, ring-hash (consistent).
Health-checks: aktiv (HTTP/TCP) + passiv (nach Codes/Timeouts).
Outlier ejection: vorübergehend „knock out“ host mit erhöhter Fehlerhaftigkeit/Latenz.
Retries: begrenzt, mit per-try Timeout und Jitter; keine unsicheren Methoden ohne Idempotenz zu retrahieren.
Verbindung pooling: Halten Sie warm-Pools zu Upstreams, begrenzen Sie Höhen.

5) Perimeter-Leistung

Caching: nach Schlüssel (Methode + Host + Pfad + Vary), Bedingungen 'ETag/If-None-Match', TTL und stale-while-revalidate.
Kompression: brotli/gzip für Textantworten.
HTTP/2/3: Multiplexing, Header-Kompression; Überprüfen Sie die WAF/IDS-Kompatibilität.
Coalescing anfordern: Gleichzeitige Abfragen für denselben Cache-Schlüssel zusammenbrechen lassen.

6) Sicherheit auf Proxy

TLS: 1. 2 + (besser 1. 3), OCSP stapling, HSTS.
WAF/Bot-Filter: vor dem Routing nach App.
CORS/CSP/Fetch-Metadata: laut Politik.
Header-гигиена: `X-Forwarded-For/Proto`, `Forwarded`, `traceparent`; Schutz vor Header-Injection und Oversize.
Körper-/Kopfgrenzen: frühe 413/431 für DoS-Muster.
mTLS für Partner-Integrationen und interne APIs.

7) Deploy-Schemata: kanarische/blau-grüne/Versionen

Weighted routing на level-7 (1%, 5%, 25%, 50%, 100%).
Header-Gate: Aktivieren Sie die Funktion durch Flag/Header (internal/testing).
Blau-grün: Umschalten der gesamten DNS/Route, schnelles Rollback.
Schatten: Paralleldurchlauf der neuen Version mit Metriken/Logaufzeichnung.

8) Sticky-Sitzungen und Hash-Routing

Cookie-stickiness (`Set-Cookie: SRV=shard-a; Path=/; HttpOnly') für stateful-Lasten.
Ring-hash/consistent by 'user _ id/tenant _ id' - Verringerung der Cross-Disability des Caches.
Vorsicht: Vermeiden Sie „ewige“ Klebrigkeit für Write-Loads → Hot-Spot; Verwenden Sie den Quotenpertenant.

9) Regionales und Geo-Routing

Anycast + Geo-DNS zur Auswahl des nächstgelegenen POP.
Header-Override (z.B. 'X-Region') für Tests und Debugging.
Abstimmung mit der gesetzlich vorgeschriebenen Datenlokalisierung (Route nach Region/Gerichtsbarkeit).

10) Beobachtbarkeit und Kontrolle

Metriken ROT: RPS, Fehlerrate (nach Klassen), Latenz p95/p99 pro Route/Cluster.
Outlier/health: Anzahl der Ejects/Re-Includes, Slow-Call-Rate.
Protokolle: strukturiert, ohne PII; Korrelation 'trace _ id '/' span _ id'.
Tracing (OTel): Spans von ingress→router→upstream; Beispiele in den p99-Diagrammen.

11) Beispiele für Konfigurationen

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 + Manifest für Canary (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) Transformationen und Kompatibilität

Normalisierung der Header/Pfade, Zensus' Location', Steuerung 'Cache-Control'.
gRPC ↔ HTTP/JSON über Übersetzer (grpc-json-transcoder).
WebSocket/HTTP2 Upgrades: Stellen Sie sicher, dass der Proxy „Upgrade “/„ Connection“ überspringt.

13) Test- und Chaos-Szenarien

Belastung: Bursts, lange Plateaus, „lange“ Körper (Slow-POST).
Injektion von Verzögerungen/Verlusten zu Upstreams → Überprüfung von Retries/Timeout/Outlier.
Kanarische Metriken: p95/p99, Fehlerrate der neuen Version gegen die alte; automatische Rollback durch SLO.
Schatten: Vergleich von Antworten (Sampling) und Side-by-Side-Logik.

14) Antipatterns

Globale Retrays ohne Idempotenz und Deadline → Takes und Storm.
Sticky-Sitzungen ohne Kontrolle der „heißen“ shards → Verzerrung der Last.
Fehlende Health-Checks/Outlier-Ejection → „faule“ Instanzen im Pool.
Unbegrenzte Header/Körper → das einfachste DoS.
Das Mischen von Transformationen und Sicherheit ohne Schemaversion → unerwartete Rückschritte.
Ein einzelner globaler Cache-Schlüssel ohne' Vary '→ falsche Antworten.

15) Spezifität von iGaming/Finanzen

Regionalität: Routing durch die Zuständigkeit des Spielers/der Marke; Isolierung der Zahlungszonen.
Kritische Routen (Ein-/Auszahlungen): kurze Timeouts, Einzelwiederholung, Idempotenz; einzelne Cluster.
PSP/KYC: dedizierte Upstream-Pools, strenge Retry/Timeout-Richtlinien, Circuit-Breaker, Geo-Pins.
AB-Kanäle: sichere Experimente mit Auszahlungen/Limits nur für den Leseweg; write - durch Flaggen und kleine Prozentsätze.

16) Checkliste Prod-Ready

  • TLS 1. 2+/1. 3, OCSP stapling, HSTS; korrekt „X-Forwarded-“.
  • Klare Routing-Regeln: host/path/header/cookie; Dokumentation.
  • Health-checks, outlier-ejection, per-try timeout, limited retrays.
  • Weighted/canary + shadow; Auto-Rollback durch SLO/Alert.
  • Cache/Kompression/ETag; Körper-/Kopflimits; request coalescing.
  • Logs/Traces mit 'trace _ id'; Metriken RED + outlier/health; Dashboards per-route/cluster.
  • WAF/Bot-Filter/CORS; Oversize- und Slow-POST-Schutz.
  • Sticky/consistent hashing wo nötig; Steuerung von Hot Shards.
  • Configs werden versioniert, Migrationen sind sicher, Geheimnisse in KMS/Vault.

17) TL; DR

Beenden Sie TLS am Perimeter und leiten Sie es über Host/Path/Header/Cookie an L7 weiter. Für Veröffentlichungen - weighted canary und shadow; für Nachhaltigkeit - health-checks, outlier-ejection, limited retries mit per-try timeout. Verwenden Sie Cache, Kompression und consistent Hashing, wo es p95 verbessert. Messen Sie die RED-Signale und den Status der Cluster, halten Sie die WAF und Größengrenzen. Für kritische Zahlungswege - separate Cluster, kurze SLAs und strenges Retray-/Idempotenzmanagement.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.