Proxy qatları və reverse-marşrutlaşdırma
Qısa xülasə
Proxy təbəqəsi platformanın «ön şinidir»: TLS-i tamamlayır, müştəriləri təsdiqləyir, trafiki paylayır, zirvələri hamarlayır və buraxılışı təhlükəsiz edir (kanaryalar, mavi-yaşıl). Minimum yetkinlik dəsti: proxy rollarının aydın stratifikasiyası, determinik marşrut qaydaları, vaxt/retraj nəzarəti, cache + rate-limit, tam müşahidə və avtomatlaşdırma.
Proxy taksonomiyası
Forward proxy - müştərilərin/xidmətlərin xaricə gedən trafiki (egress), filtrlər/güzgü, DLP.
Reverse proxy - xarici sorğuları qəbul edir və backends istiqamətləndirir (bizim əsas diqqət).
1. Edge/CDN/WAF (Anycast, bot filtrləri, önbellək)
2. L7 Ingress/API-gateway (marşrutlaşdırma, autentifikasiya, siyasət)
3. East-west, mTLS və retrains üçün xidmət təbəqəsi/Mesh (sidecar)
4. Çıxış inteqrasiyası üçün Egress-gateway (PSP, tərəfdaşlar)
Marşrutlaşdırma (L4/L7) və alqoritmlər
L4 (TCP/UDP, passthrough TLS): HTTP anlamadan minimum gecikmə.
L7 (HTTP/1. 1, HTTP/2, HTTP/3/gRPC): host/path/header/cookie qaydaları, transformasiya, WAF, önbellək.
- Round-robin/Least-connections/EWMA - ümumi hallar.
- Consistent-hash (cookie/identifikator ilə) - sticky-sessiyaları və cache-lokalizasiyası.
- Header-/Geo-/Latency-based - regionlara/provayderlərə hədəfləmə, sürətli PoP.
- Canary/Weighted - mərhələli rollout (5 → 25 → 50 → 100%).
- Shadow/Mirroring - cavablara təsir etmədən yeni bir xidmətə trafik surəti.
Sorğuların/cavabların transformasiyası
URL rewrite/redirect: yolların unifikasiyası, versiyası ('/v1/→/svc/v1/').
Başlıqlar: 'X-Forwarded-For/Proto/Host' normallaşdırın, 'traceparent '/' x-request-id' əlavə edin, lazımsız filtreləyin.
CORS/CSRF: gateway-də mərkəzləşdirin, hər bir xidmətdə parametrləri artırmayın.
Compression/Decompression: Brotli/gzip, növlərinə görə nəzarət.
Body-limits və slowloris/oversized headers qarşı müdafiə.
Autentifikasiya və təhlükəsizlik
TLS 1. 3 + OCSP stapling + HSTS xarici cəbhələrdə.
mTLS: adminks, əməliyyat API, partnyor kanalları.
OAuth2/OIDC: gateway (token introspection/JWT-verify) vasitəsilə avtorizasiya → upstream-də claims-ə keçid.
Xidmətlərarası və tərəfdaşlıq inteqrasiyası üçün API-açarları/imzaları (HMAC).
WAF/bot filtrləri: siqnallar + davranış qaydaları, greypass/kapça.
CSP/X-Frame-Options/Referrer-Policy - kənarda security-başlıqlar.
Etibarlılıq: retrai/time/SV
Zaman: L4/L7 connect/read/write, vahid siyasət (məsələn, 'connect 500ms', 'read 3-5s' API üçün).
Retralar: yalnız idempotent ('GET/HEAD'), vaxt/miqdar limiti, 'retry-budget'.
Circuit-breaker: eyni vaxtda sorğu/səhv məhdudiyyətləri, sürətli uğursuzluq və deqradasiya.
Outlier detection: hovuzdan «pis» nümunələri istisna.
Backoff + jitter: «sürü effekti» yaratmamaq üçün.
Cache və Trafik İdarəetmə
L7 keşi: statika/yarı dinamika (kataloqlar, konfiqlər), 's-maxage '+' stale-while-revalidate '.
Rate-limit/Quota: IP/ASN/device/cookie, paylanmış sayğac (Redis/Rate-service).
Sticky-sessiyalar: cookie/consistent-hash; failover və «kontrplak» nəzərə alın.
Request collapsing (dedupe): eyni GET «fırtına» origin qorunması.
Protokollar və xüsusiyyətlər
HTTP/2: multiplex, prioritetlər; saxlayın 'ALPN: h2'.
HTTP/3/QUIC: itkiyə/jitter müqaviməti; UDP/443 açın, MTU/PMTUD izləyin.
gRPC: health-checks, streaming, deadlines; proxy 'grpc-status' dəstəkləməlidir.
WebSocket/SSE: uzun ömürlü konnektlər, səlahiyyətli idle-taymautlar və limitlər.
Müşahidə və SLO
Metriklər:- L4/L7: `p50/p95/p99`, ошибки (`4xx/5xx/Grpc-codes`), `open_conns`, `CPS/RPS`, `retry_rate`.
- TLS: versiya/şifrələr, p95 handshake, resumption.
- Marşrutlaşdırma: route/cluster, outlier-ejections üzrə paylar.
- Rate-limit/WAF :/FP-rate.
- Girişlər: giriş (PII olmadan), marşrutlaşdırma səbəbləri, izləmə başlıqları.
- Traces: 'traceparent '/B3, sampling.
- p95 TTFB API ≤ 250-300 ms; L7 ≤ 0 səhvidir. 5%.
- Kanaryaların uğuru (metrik deqradasiyasız) 99% -ni ≥.
- FP-rate WAF ≤ 0. 1%.
Tipik konfiqlər
Nginx (reverse proxy, HTTP/2, kanarya, sıxılma)
nginx map $http_x_canary $upstream_pool {
default "stable";
~^1$ "canary";
}
upstream api_stable { zone zst 64k; server 10. 0. 1. 10:8443; server 10. 0. 1. 11:8443; keepalive 256; }
upstream api_canary { zone zcn 64k; server 10. 0. 2. 10:8443; keepalive 64; }
server {
listen 443 ssl http2 reuseport;
server_name api. example. com;
ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_stapling on; ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000" always;
basic limits/protection client_max_body_size 10m;
sendfile on; brotli on; gzip on;
location / {
proxy_http_version 1. 1;
proxy_set_header Host $host;
proxy_set_header X-Request-Id $request_id;
proxy_set_header X-Forwarded-Proto https;
proxy_connect_timeout 500ms;
proxy_read_timeout 5s;
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_next_upstream_tries 1; # Retrays are limited to proxy_pass https://api_$upstream_pool;
}
}
HAProxy (JWT-verify + mTLS + rate-limit)
haproxy frontend fe_https bind:443 ssl crt /etc/haproxy/certs/ alpn h2,http/1. 1 http-request set-header X-Request-Id %[unique-id]
http-request lua. jwt_verify # external verification script JWT stick-table type ip size 1m expire 10m store http_req_rate (10s)
http-request deny if { src_http_req_rate(10s) gt 100 }
default_backend be_api
backend be_api balance roundrobin option httpchk GET /healthz server s1 10. 0. 1. 10:8443 check ssl verify required ca-file /etc/haproxy/ca. pem server s2 10. 0. 1. 11:8443 check ssl verify required ca-file /etc/haproxy/ca. pem
Envoy (JWT + weighted routes + outlier detection)
yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0. 0. 0. 0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. network. http_connection_manager. v3. HttpConnectionManager stat_prefix: ingress route_config:
virtual_hosts:
- name: api domains: ["api. example. com"]
routes:
- match: { prefix: "/" }
route:
weighted_clusters:
clusters:
- { name: api-stable, weight: 95 }
- { name: api-canary, weight: 5 }
http_filters:
- name: envoy. filters. http. jwt_authn typed_config: { "@type": type. googleapis. com/envoy. extensions. filters. http. jwt_authn. v3. JwtAuthentication }
- name: envoy. filters. http. router clusters:
- name: api-stable connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN outlier_detection: { consecutive_5xx: 3, interval: 2s, base_ejection_time: 30s }
transport_socket:
name: envoy. transport_sockets. tls
- name: api-canary connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN transport_socket:
name: envoy. transport_sockets. tls
Traefik (rule-based marşrutları, konsepsiya)
yaml http:
routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1/`)"
service: api-svc tls: { certResolver: letsencrypt }
services:
api-svc:
loadBalancer:
servers:
- url: "https://10. 0. 1. 10:8443"
- url: "https://10. 0. 1. 11:8443"
Proxy performansı
Connection pooling və backends keepalive, instansa connections limiti.
Reuseport, pin CPU/IRQ, kifayət qədər soket buferləri.
TLS: ECDSA + qısa zəncirlər, resumption ≥ 70%, HTTP/2/3 daxildir.
«Qaynar» cavablar üçün proxy cache (o cümlədən 304-validasiya).
Warm-up: pik əvvəl DNS/TLS/konnektlərin isidilməsi.
DR və arıza müqaviməti
Deqradasiya qovşaqlarının avtomatlaşdırılması ('outlier-ejection').
Health-checks L4/L7 (HTTP body-marker versiyası).
Fail-open/Fail-closed - ödəniş/kritik yollar üçün şüurlu seçin.
Shadow rejimi yeni xidmət trafikə keçid əvvəl.
Runbooks: «klaster çöküşü», «redaktorlar döngəsi», «konnektlərin sızması», «fırtına retrai».
Giriş çek siyahısı
- Stratifikasiya: Edge → Ingress/API-GW → Mesh/Egress, rolları və məsuliyyət sərhədləri.
- Marşrutlaşdırma siyasəti: host/path/header/weight, canary/blue-green, shadow.
- Təhlükəsizlik: TLS 1. 3, mTLS həssas yolları, JWT/OAuth2, WAF üçün.
- Vaxt/retrailer/SV: vahid dəyərlər, idempotentlik, retry-budget.
- Cache/Rate-limit/Request-collapsing uyğun olduğu yerdə.
- Müşahidə: metriklər/log/treys, correlation identifikatorları.
- SLO: p95/səhvlər/resurslar; perimetr uğursuzluqları üçün alertlər.
- IaC/GitOps: Repositor, kanarya relizlər, sürətli rollback.
- Testlər: e2e-marşrutlar, chaos-ssenarilər, hadisələrdən əvvəl yük.
Tipik səhvlər
«Magic» proxy kombayn No split rolları → mürəkkəb RCA və yüksək blast radius.
Qeyri-idempotent sorğular üçün retrajlar → əməliyyatların dublikatları.
Başlıqların normallaşdırılması/URL → cache-poisoning və səhv açarlar yoxdur.
Sticky-seanslar heç bir plan failover → deqradasiya instansiyasında yapışma.
'traceparent '/' x-request-id' → problemi həll etmək mümkün deyil.
Sərt 301/302 proxy → «loop» səviyyəsində və API versiyalarına nəzarət itkisi.
iGaming/Fintech üçün xüsusiyyətlər
Ödənişlər/PSP: mTLS ilə ayrılmış egress-gateway, ciddi taymautlar, idempotent açarları, ağ IP/ASN siyahıları.
Piklər (matçlar/turnirlər): canary/weighted, boz botlar marşrutları, aqressiv GET cache, origin «fırtına» qorunması.
Tənzimləyici/Log: Audit Log-da siyasət versiyalarını və marşrutun səbəblərini qeyd edin; PII-ni minimuma endirin.
Məzmun provayderləri: consistent-hash cache lokalizasiyası və bərabər paylanması üçün provayder açarı ilə.
Mini playbuklar
1) Kanarya API Release
1. 'api-canary' 5% çəki daxil edin; 2) p95/səhvlərin monitorinqi; 3) payını genişləndirmək; 4) deqradasiya zamanı avtomobil çıxışı.
2) Deqradasiya qovşağının təcili çıxarılması
1. Outlier-ejection və ya əl 'drain'; 2) cache hovuzu və hit yoxlama; 3) post-insident RCA.
3) funksiyası güzgü
1. Cavablara təsir etmədən gölgəni açın; 2) cavab metrik/diff müqayisə; 3) keçid haqqında qərar qəbul edin.
4) Fırtına retrai
1. retry-budget/vaxt limitlərini azaltmaq; 2) request-collapsing daxil; 3) lokal qapaqlar/cache; 4) origin sabitləşdirmək.
Yekun
Yaxşı dizayn edilmiş proksi təbəqəsi rolların ayrılması, determinik marşrutlaşdırma, etibarlı siyasətlər (zaman/retrauslar/SV), təhlükəsizlik (mTLS/JWT/WAF) və müşahidə qabiliyyətidir. Konfiqurasiyaları IaC-də düzəldin, kanaryalardan və gölgələrdən istifadə edin, SLO-ları ölçün - və platformanız hətta ən isti zirvə saatlarında da ölçülə bilər, proqnozlaşdırıla bilər və qorunur.