Proxy gatlaklary we tersine ugrukdyryş
Gysgaça gysgaça
Proxy gatlagy - platformanyň "öň tekeri": TLS tamamlaýar, müşderileri tassyklaýar, traffigi paýlaýar, pikleri tekizleýär we goýberilişi howpsuz edýär (kanareýkalar, gök ýaşyl). Iň az kämillik toplumy: proksi-rollaryň takyk gatlaklaşdyrylmagy, marşrutlaşdyrmagyň kesgitlenen düzgünleri, wagt/retraý gözegçiligi, kesiş + rate-limit, ahyrky gözegçilik we awtomatlaşdyryş.
Proksiniň taksonomiýasy
Forward proxy - müşderileriň/hyzmatlaryň çykýan traffigi (egress), süzgüçler/aýna, DLP.
Reverse proxy - daşarky soraglary kabul edýär we arka taraplara ugrukdyrýar (esasy üns).
1. Edge/CDN/WAF (Anycast, bot-süzgüçler, kesh)
2. L7 Ingress/API-gateway (ugrukdyrmak, tassyklamak, syýasatlar)
3. Gündogar-günbatar, mTLS we retraýlar üçin hyzmat gatlagy/Mesh (sidecar)
4. Gidýän integrasiýa üçin Egress-gateway (PSP, hyzmatdaşlar)
Ugrukdyryş (L4/L7) we algoritmler
L4 (TCP/UDP, passthrough TLS): HTTP-e düşünmezden iň az gijikdirme.
L7 (HTTP/1. 1, HTTP/2, HTTP/3/gRPC): host/path/header/cookie, transformasiýa, WAF, kesh düzgünleri.
- Round-robin/Least-connections/EWMA - umumy ýagdaýlar.
- Consistent-hash (cookie/ID boýunça) - sticky-sessiýalar we kesh lokalizasiýasy.
- Header-/Geo-/Latency-based - sebitler/üpjün edijiler boýunça nyşana almak, çalt PoP.
- Canary/Weighted - tapgyrlaýyn rollout (5 → 25 → 50 → 100%).
- Shadow/Mirroring - jogaplara täsir etmezden täze hyzmat üçin traffigiň göçürmesi.
Soraglary/jogaplary üýtgetmek
URL rewrite/redirect: ýollary birleşdirmek, wersiýalaşdyrmak ('/v1/→/svc/v1/').
Sözbaşylar: 'X-Forwarded-For/Proto/Host' -y kadalaşdyryň, 'traceparent '/' x-request-id' -ni goşuň, artykmaç süzüň.
CORS/CSRF: gateway-da merkezleşdiriň, her hyzmatda sazlamalary artdyrmaň.
Compression/Decompression: Brotli/gzip, görnüşlere görä gözegçilik.
Body-limits we slowloris/oversized headers goragy.
Tassyklamak we howpsuzlyk
TLS 1. 3 + OCSP stapling + HSTS daşarky frontlarda.
mTLS: administratorlar, operasiýa API-leri, hyzmatdaş kanallar.
OAuth2/OIDC: gateway (token introspection/JWT-verify) → claims upstream.
Hyzmatara we hyzmatdaş integrasiýalary üçin API-açarlar/gollar (HMAC).
WAF/bot-süzgüçler: alamatlar + özüni alyp barş düzgünleri, greypass/kapça.
CSP/X-Frame-Options/Referrer-Policy - howpsuzlyk sözbaşylary.
Ygtybarlylyk: retrailer/wagtlar/SW
Wagt: L4/L7 connect/read/write, bitewi syýasat (mysal üçin, 'connect 500ms', 'read 3-5s' API üçin).
Retraýlar: diňe idempotent ('GET/HEAD'), wagt/san boýunça çäk, 'retry-budget'.
Circuit-breaker: bir wagtyň özünde haýyşlara/ýalňyşlyklara çäklendirmeler, çalt şowsuzlyk we zaýalanma.
Outlier detection: howuzdan "erbet" nusgalary aýyrmak.
Backoff + jitter: "sürü täsirini" döretmezlik üçin.
Nagt pul we traffigi dolandyrmak
Kesh L7: statika/ýarym dinamika (kataloglar, konfigler), 's-maxage' + 'stale-while-revalidate'.
Rate-limit/Quota: IP/ASN/device/cookie boýunça, paýlanan hasaplaýjy (Redis/Rate-service).
Sticky-sessiýalar: cookie/consistent-hash; failover we "kontrplak" -y göz öňünde tutuň.
Request collapsing (dedupe): origini şol bir GET-leriň "tupanyndan" goramak.
Teswirnamalar we aýratynlyklar
HTTP/2: multiplekslemek, ileri tutulýan ugurlar; tutuň 'ALPN: h2'.
HTTP/3/QUIC: ýitgä/jitere garşylygy; UDP/443 açyň, MTU/PMTUD-a gözegçilik ediň.
gRPC: health-checks, streaming, deadlines; proxy 'grpc-status' -y goldamaly.
WebSocket/SSE: long-lived konnektleri, sowatly idle-wagtlary we çäkleri.
Synlamak we SLO
Metrikler:- L4/L7: `p50/p95/p99`, ошибки (`4xx/5xx/Grpc-codes`), `open_conns`, `CPS/RPS`, `retry_rate`.
- TLS: wersiýa/şifrler, p95 handshake, resumption.
- Marşrut: route/cluster, outlier-ejections boýunça paýlar.
- Rate-limit/WAF: işleýiş/FP-rate.
- Logi: giriş (PII-siz), marşrutyň sebäpleri, marşrutyň sözbaşylary.
- Söwda: 'traceparent '/B3, sample.
- p95 TTFB API ≤ 250-300 ms; L7 ≤ 0 ýalňyşlygy. 5%.
- Kanarekleriň üstünligi (metrleriň zaýalanmasyz) ≥ 99%.
- FP-rate WAF ≤ 0. 1%.
Adaty konfigikler
Nginx (tersine proxy, HTTP/2, kanareýa, gysyş)
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, düşünje)
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 öndürijiligi
Connection pooling and keepalive to backends, connections limit to instans.
Reuseport, pin CPU/IRQ, ýeterlik soket buferleri.
TLS: ECDSA + gysga zynjyrlar, resumption ≥ 70%, HTTP/2/3 goşuldy.
"Gyzgyn" jogaplar üçin proksi kesiş (şol sanda 304-tassyklamalar).
Warm-up: iň ýokary derejeden öň DNS/TLS/konnektleri gyzdyrmak.
DR we şowsuzlyga çydamlylyk
Degrade düwünleriniň awtomatlaşdyrylmagy ('outlier-ejection').
Health-checks L4/L7 (HTTP body-marker wersiýasy).
Fail-open/Fail-closed - töleg/kritiki ýollar üçin aňly saýlaň.
Traffigi täze hyzmata geçirmezden ozal kölegeli re modeim.
Runbooks: "klasteriň çökmegi", "redaktorlaryň aýlawy", "konnektleriň syzmagy", "retraý tupany".
Giriş barlagy
- Gatlaklaşdyrmak: Edge → Ingress/API-GW → Mesh/Egress, rollary we jogapkärçilik çäkleri.
- Marşrut syýasaty: host/path/header/weight, canary/blue-green, shadow.
- Howpsuzlyk: TLS 1. 3, mTLS duýgur ýollar üçin, JWT/OAuth2, WAF.
- Wagt/retrailer/SW: umumy gymmatlyklar, idempotentlik, retry-budget.
- Keş/Rate-limit/Request-collapsing.
- Syn edilişi: metrikler/loglar/söwdalar, correlation-identifikatorlary.
- SLO: p95/ýalňyşlyklar/çeşmeler; perimetr bökdençlikleri üçin alertler.
- IaC/GitOps: ammardaky proksi konfigi, kanareýanyň çykarylyşy, çalt rollback.
- Synaglar: e2e-marşrutlar, chaos-ssenariýalar, wakalardan öň ýük.
Adaty ýalňyşlyklar
Rollary bölmezden "jadyly" proksi kombaýn → çylşyrymly RCA we ýokary blast radiusy.
Indempotent däl soraglar üçin retraýalar → geleşikleriň dublikatlary.
Başlyklaryň kadalaşmagy/URL → cache-poisoning we nädogry açarlar ýok.
Sticky-sessiýalar meýilnamasyz failover → zaýalanmak.
'traceparent '/' x-request-id' → ýok.
Gaty 301/302 proxy derejesinde → "aýlawlar" we API wersiýalaryna gözegçiligiň ýitmegi.
iGaming/fintech üçin aýratynlyklar
Tölegler/PSP: mTLS bilen bölünen egress-gateway, berk wagtlar, idempotent açarlary, IP/ASN ak sanawlary.
Piki (oýunlar/ýaryşlar): canary/weighted, botlar üçin çal ýollar, agressiw GET keşi, origini "tupandan" goramak.
Düzgünleşdiriji/logika: syýasatlaryň wersiýalaryny we marşrutyň sebäplerini audit-bloglarda ýazga alyň; iň az PII.
Mazmun üpjün edijileri: kesh lokallygy we deň paýlanylyşy üçin üpjün ediji açary boýunça consistent-hash.
Kiçi pleýbuklar
1) Kanar API
1. 'api-canary' -de agramyň 5% -ini goşmak; 2) r95/ýalňyşlyklara gözegçilik etmek; 3) paýy giňeltmek; 4) pese gaçanda awtootkat.
2) Zaýalanýan düwüniň gyssagly aýrylmagy
1. Outlier-ejection ýa-da el bilen 'drain'; 2) puluň we keşiň hitiniň barlanylmagy; 3) wakadan soňky RCA.
3) Funksiýany şöhlelendirmek
1. Jogaplara täsir etmezden älemi açyň; 2) jogaplaryň metrikasyny/diffini deňeşdirmek; 3) geçiş barada karar bermek.
4) Retraý tupany
1. Retry-budget/wagt çäklerini azaltmak; 2) request-collapsing goşmak; 3) lokal bloklar/keş; 4) origini durnuklaşdyrmak.
Jemi
Gowy dizaýn edilen proksi gatlak rollaryň bölünmegi, kesgitlenen marşrut, ygtybarly syýasatlar (wagt/retrailer/SV), howpsuzlyk (mTLS/JWT/WAF) we syn edilişdir. IaC-de konfigurasiýalary düzüň, kanareýkalary we gölgeleri ulanyň, SLO-ny ölçäň - platformasyňyz iň ýokary sagatlarda-da ulalyp, öňünden aýdyp we goralyp bilner.