GH GambleHub

Proxy inversă și rutare

1) Rolul proxy inversă

Proxy inversă - „linia din față” a platformei: acceptă TLS, distribuie traficul între amonte, aplică politici de securitate și performanță. Scopul este latența minimă, rutarea previzibilă și izolarea rapidă a instanțelor/zonelor degradante.

2) Straturi și protocoale

L4: TCP/UDP proxy (bazat pe SNI TLS passthrough, QUIC). Preț scăzut, fără a înțelege HTTP.
L7: HTTP/1. 1-2-3, gRPC, WebSocket. Rutare bogată (gazdă, cale, antete, cookie-uri), transformări și cache.

Modelul TLS: terminați pe perimetru (NGINX/Envoy), în interior - mTLS/mesh. SNI permite gazde virtuale pe același IP.

3) Strategii de rutare (L7)

1. Host-based: pe domenii ('api. brand. com "→ cluster" brand-api ").
2. Traseu: "/v1/plăți "→" plăți-svc', "/v1/portofele "→" portofele-svc ".
3. Header-based: „Regiunea X: eu-central”, „X-Tenant: 42”, „Utilizator-Agent ”/„ Accept”.
4. Cookie-uri bazate pe: teste A/B, sesiuni lipicioase.
5. Ponderat/Canar: procentul de trafic la noua versiune (1-5% → 100%).
6. Geo/ASN: pe țări/ASN trimise la cel mai apropiat POP/regiune.
7. Hashing consecvent: legarea unei chei (user_id/tenant_id) de o instanță → localitatea/stickiness cache.
8. Umbră/Oglindire: copiați traficul în „umbră” în amonte fără a afecta răspunsul (pentru testele de regresie).

4) Echilibrare și toleranță la erori

Algoritmi: rotund-robin, cu cea mai mică cerere, aleatoriu, inel-hash (consecvent).
Verificări de sănătate: activ (HTTP/TCP) + pasiv (prin coduri/timeout).
Outlier ejection: temporar „knock out” o gazdă cu eroare/latență crescută.
Retries: limitat, cu timeout și jitter pe încercare; nu retrage metodele nesigure fără idempotență.
Îmbinarea conexiunii: păstrați piscine calde în amonte, limitați maximele.

5) Performanța perimetrului

Caching: prin cheie (metodă + gazdă + cale + Vary), „ETag/If-None-Match” condiții, TTL și vechi-în timp ce-revalidate.
Compresie: brotli/gzip pentru răspunsuri text.
HTTP/2/3: multiplexare, compresie antet; Verificați compatibilitatea WAF/IDS.
Cerere de coalescing - colaps cereri concurente pentru aceeași cheie cache.

6) Securitate pe proxy

TLS: 1. 2 + (mai bine decât 1. 3), capsare OCSP, HSTS.
Filtre WAF/bot: înainte de rutare în aplicație.
CORS/CSP/Fetch-Metadate: conform politicilor.
Header- гигиена: „X-Forwarded-For/Proto”, „Forwarded”, „traceparent”; antet-injecție și protecție supradimensionată.
Limite corp/antet: timpuriu 413/431 pentru modele DoS.
mTLS pentru integrarea partenerilor și API-uri interne.

7) Implementați scheme: canar/albastru-verde/versiuni

Rutare ponderată на nivel-7 (1%, 5%, 25%, 50%, 100%).
Header-gate: activați funcția prin pavilion/antet (intern/testare).
Albastru-verde: DNS complet/comutare traseu, rollback rapid.
Umbră: rularea paralelă a noii versiuni cu intrarea metricilor/jurnalelor.

8) sesiuni lipicioase și rutare hash

Cookie-stickiness ('Set-Cookie: SRV = shard-a; Cale =/; HttpOnly ') pentru încărcături stabile.
Ring-hash/consecvent prin 'user _ id/tenant _ id' - reduce cache cross-disabilities.
Atenție: evitați lipiciozitatea „eternă” pentru scrierea încărcăturilor → hot-spot; Foloseşte un chiriaş.

9) Regional și geo-rutare

Anycast + geo-DNS pentru a selecta cel mai apropiat POP.
Antet-suprascriere (de exemplu, „Regiunea X”) pentru teste și depanare.
Coordonați cu localizarea datelor obligatorii din punct de vedere legal (rută după regiune/jurisdicție).

10) Observabilitate și control

Valori RED: RPS, rata de eroare (pe clase), latența p95/p99 pe traseu/cluster.
Outlier/sănătate: număr de modificări/recloss, lent-call-rate.
Busteni: structurati, fara PII; corelație „trace _ id'/” span _ id'.
Urmărirea (OTel): se întinde ingress→router→upstream; exemplare pe grafice p99.

11) Exemple de configurare

11. 1 NGINX: gazdă/cale/ponderat + кэш

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 Trimisul: antet-rutare, canar, outlier-ejection, oglindire

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: reguli + 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 Kubernete: Manifestul de intrare + pentru canar (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) Transformări și compatibilitate

Normalizarea anteturilor/căilor, „Locație” recensământ, „Cache-Control” de control.
gRPC ↔ HTTP/JSON prin intermediul traducătorilor (grpc-json-transcoder).
WebSocket/HTTP2 upgrade-uri - Asigurați-vă că proxy-ul sare peste 'Upgrade '/' Connection'.

13) Scenarii de testare și haos

Încărcare: explozii, platouri lungi, corpuri „lungi” (lent-POST).
Întârziere/pierdere injectare în amonte → retries/timeout/outlier check.
Metrica canară: p95/p99, rata de eroare a noii versiuni vs vechiul; rollback automat de SLO.
Shadow: compararea răspunsurilor (eșantionare) și logica side-by-side.

14) Antipattern

Retragerile globale exclud idempotența și termenul limită → dubluri și furtuni.
Sesiuni lipicioase fără cioburi fierbinți de control → încărcare.
Lipsa controalelor de sănătate/ejecția exterioară → instanțele „putrede” din piscină.
Antete/corpuri nelimitate → cele mai simple DoS.
Amestecarea transformărilor și a securității fără o versiune schemă → regresii neașteptate.
O singură memorie cache globală fără un 'Vary' → răspunsuri incorecte.

15) Specificul iGaming/Finanțe

Regionalitate: rutare după jurisdicția jucătorului/mărcii; izolarea zonelor de plată.
Rute critice (depozite/ieșiri): intervale scurte de timp, o repetiție, idempotență; grupuri individuale.
PSP/KYC: bazine dedicate în amonte, politici stricte de retry/timeout, întrerupător de circuit, geo-pini.
canale AB: experimente sigure cu plăți/limite numai pentru calea de citire; scrie - prin steaguri și procente mici.

16) Lista de verificare Prod Readiness

  • TLS 1. 2+/1. 3, capsare OCSP, HSTS; corect „X-Forwarded”.
  • Reguli de rutare clare: host/path/header/cookie; documentație.
  • Controale de sănătate, outlier-ejectare, per-try timeout, retraiele restricționate.
  • Ponderat/canar + umbră; auto-rollback prin SLO/alertă.
  • Cache/compresie/ETag; limitele caroseriei/anteturilor; cerere de coalescing.
  • Jurnale/trasee cu 'trace _ id'; Indicatori RED + outlier/sănătate; tablouri de bord pe traseu/cluster.
  • Filtre WAF/bot/CORS; protecție supradimensionată și lentă POST.
  • Lipicios/consistent hashing acolo unde este necesar; hot-cioburi de control.
  • Configurațiile sunt versionate, migrațiile sunt sigure, secretele în KMS/Vault.

17) TL; DR

Termina TLS pe perimetrul și ruta spre L7 prin gazdă/cale/antet/cookie. Pentru versiuni - canar ponderat și umbră; pentru stabilitate - controale de sănătate, exterior-ejecție, rețineri limitate cu timeout pe încercare. Utilizați cache, compresie și hashing consistent în cazul în care îmbunătățește p95. Măsurați semnalele RED și starea clusterului, țineți limitele WAF și dimensiune. Pentru rute critice de plată - clustere separate, SLA-uri scurte și gestionarea strictă a retras/idempotency.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.