GH GambleHub

Reverse-proxy və marşrutlaşdırma

1) Revers-proxy rolu

Reverse-proxy - platformanın «ön xətti»: TLS qəbul edir, trafiki axınlar arasında paylayır, təhlükəsizlik və performans siyasətlərini tətbiq edir. Məqsəd minimal gizlilik, proqnozlaşdırıla bilən marşrutlaşdırma və deqradasiya edən instansiyaların/zonaların sürətli izolyasiyasıdır.

2) Qatlar və protokollar

L4: TCP/UDP proxy (SNI-based TLS passthrough, QUIC). HTTP anlamadan aşağı qiymət.
L7: HTTP/1. 1–2–3, gRPC, WebSocket. Zəngin marşrutlaşdırma (host, path, headers, cookies), transformasiya və cache.

TLS modeli: perimetrdə terminləşdirmək (NGINX/Envoy), daxilində - mTLS/mesh. SNI bir IP virtual hosts imkan verir.

3) Marşrutlaşdırma strategiyaları (L7)

1. Host-based: domen ('api. brand. com '→ klaster' 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-based: A/B testləri, «yapışqan» sessiyalar.
5. Weighted/Canary: yeni versiyada trafik faizi (1-5% → 100%).
6. Geo/ASN: Ölkə üzrə/ASN ən yaxın ROR/regiona göndərilir.
7. Consistent hashing: açar bağlamaq (user_id/tenant_id) instant → cache lokalization/yapışqanlıq.
8. Shadow/Mirroring: Cavablara təsir etmədən trafiki «kölgə» axınına köçürürük (reqressiya testləri üçün).

4) Balans və arıza müqaviməti

Alqoritmlər: round-robin, least-request, random, ring-hash (consistent).
Health-checks: aktiv (HTTP/TCP) + passiv (kodlara/taymautlara görə).
Outlier ejection: Müvəqqəti «nokaut» ev sahibi artan səhv/gizli.
Retries: məhdud, per-try timeout və jitter ilə; idempotentlik olmadan təhlükəli metodları geri çəkməyin.
Connection pooling: axınlara warm-hovuzları saxlamaq, maksimumları məhdudlaşdırmaq.

5) Perimetr performansı

Caching: açar (method + host + path + Vary), şərtlər 'ETag/If-None-Match', TTL və stale-while-revalidate.
Kompres: mətn cavabları üçün brotli/gzip.
HTTP/2/3: multiplexing, header-compression; WAF/IDS uyğun əmin olun.
Request coalescing: Eyni cache açarı üçün paralel sorğular.

6) Proxy təhlükəsizlik

TLS: 1. 2 + (daha yaxşı 1. 3), OCSP stapling, HSTS.
WAF/bot filtrləri: app marşrutlaşdırmadan əvvəl.
CORS/CSP/Fetch-Metadata: siyasətlərə görə.
Header-гигиена: `X-Forwarded-For/Proto`, `Forwarded`, `traceparent`; header-injection və oversize qarşı müdafiə.
Body/headers limits: DoS nümunələri üçün erkən 413/431.
Tərəfdaşlıq inteqrasiyası və daxili API üçün mTLS.

7) Deploi sxemləri: canary/blue-green/versiyası

Weighted routing на level-7 (1%, 5%, 25%, 50%, 100%).
Header-gate: bayraq/başlıq (internal/testing) ficha daxil.
Blue-green: bütün DNS/route, sürətli rollback keçid.
Shadow: metrik/log yazma ilə yeni versiyası paralel qaçış.

8) Sticky-sessiyalar və hash-marşrutlaşdırma

Cookie-stickiness (`Set-Cookie: SRV=shard-a; Path=/; HttpOnly ') stateful yükləmələri üçün.
Ring-hash/consistent by 'user _ id/tenant _ id' - cache cross-əlilliyi azaldılması.
Xəbərdarlıq: write yükləri → hot-spot üçün «əbədi» yapışqanlıqdan qaçın; per-tenant kvota istifadə edin.

9) Regional və geo-marşrutlaşdırma

Anycast + geo-DNS ən yaxın POP seçin.
Testlər və hata ayıklama üçün Header-override (məsələn, 'X-Region').
Qanunvericiliklə tələb olunan məlumatların lokallaşdırılması ilə əlaqələndirmək (region/yurisdiksiya üzrə route).

10) Müşahidə və nəzarət

RED metrikası: RPS, error-rate (siniflərə görə), latency p95/p99 per-route/cluster.
Outlier/health: Edjects/təkrar qoşulmaların sayı, slow-call-rate.
Log: strukturlaşdırılmış, PII olmadan; 'trace _ id '/' span _ id' korelyasiyası.
Trace (OTel): ingress → router → upstream yuxular; p99 qrafiklərində exemplars.

11) Konfiqurasiya nümunələri

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 + canary üçün manifest (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) transformasiya və uyğunluq

Başlıqların/yolların normallaşdırılması, 'Location' siyahıyaalınması, 'Cache-Control' idarəetməsi.
gRPC HTTP/JSON vasitəsilə translatorlar (grpc-json-transcoder).
WebSocket/HTTP2 upgrades: proxy 'Upgrade '/' Connection' keçməsinə əmin olun.

13) Test və xaos ssenariləri

Yük: burst, uzun plato, «uzun» bədən (slow-POST).
Axınlara gecikmə/itki inyeksiyası → retries/timeout/outlier.
Canary metrik: p95/p99, error-rate köhnə vs yeni versiyası; SLO avtomatik rollback.
Shadow: cavabların müqayisəsi (sempling) və side-by-side-məntiq.

14) Antipattern

İdempotentlik və son tarix nəzərə alınmadan qlobal retrajlar → dubl və fırtına.
Sticky-seans nəzarət olmadan «isti» şard → cross yük.
health-checks/outlier-ejection → hovuzda «çürük» instants yoxdur.
Limitsiz başlıqlar/bədən → ən sadə DoS.
Sxemlərin bir versiyası olmadan transformasiya və təhlükəsizlik qarışdırılması → gözlənilməz reqressiyalar.
'Vary' olmadan vahid qlobal cache açarı → səhv cavablar.

15) iGaming/Maliyyə Xüsusiyyətləri

Regionallıq: oyunçu/marka yurisdiksiyasına görə marşrut; ödəniş zonalarının izolyasiyası.
Kritik marşrutlar (depozitlər/nəticələr): qısa vaxtlar, bir təkrarlama, idempotentlik; ayrı-ayrı klasterlər.
PSP/KYC: xüsusi upstream hovuzlar, sərt retry/timeout siyasətləri, circuit-breaker, geo-pin.
AB kanalları: Yalnız read-road üçün ödənişlər/limitlər ilə təhlükəsiz təcrübələr; write - bayraqlar və kiçik faizlər vasitəsilə.

16) Prod hazırlıq yoxlama siyahısı

  • TLS 1. 2+/1. 3, OCSP stapling, HSTS; düzgün 'X-Forwarded-'.
  • Aydın marşrutlaşdırma qaydaları: host/path/header/cookie; sənədləşmə.
  • Health-checks, outlier-ejection, per-try timeout, məhdud retrai.
  • Weighted/canary + shadow; SLO/alertlər üzrə avto-rollback.
  • Cache/Kompression/ETag; body/headers limitləri; request coalescing.
  • 'trace _ id' ilə giriş/treys; RED + outlier/health metriklər; dashboard per-route/cluster.
  • WAF/bot filtrləri/CORS; oversize və slow-POST qorunması.
  • Sticky/consistent hashing lazım olan yerdə; hot-şard nəzarət.
  • Konfiqlər versiyalaşdırılır, miqrasiyalar təhlükəsizdir, KMS/Vault-da sirlər.

17) TL; DR

TLS-i perimetrdə terminləşdirin və host/path/header/cookie ilə L7-yə yönləndirin. Relizlər üçün - weighted canary və shadow; sabitlik üçün - health-checks, outlier-ejection, per-try timeout ilə məhdud retries. Bu p95 yaxşılaşdırır harada cache, kompres və consistent hashing istifadə edin. RED siqnalları və klasterlərin vəziyyətini ölçün, WAF və ölçü limitlərini saxlayın. Kritik ödəniş yolları üçün - ayrı-ayrı klasterlər, qısa SLA və ciddi retras/idempotent idarəetmə.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.