GH GambleHub

لایه های پروکسی و مسیریابی معکوس

خلاصه ای کوتاه

لایه پروکسی «اتوبوس جلو» پلت فرم است: TLS را کامل می کند، مشتریان را تایید می کند، ترافیک را توزیع می کند، قله ها را صاف می کند و باعث آزاد شدن امن (قناری ها، آبی سبز) می شود. حداقل بلوغ مجموعه: طبقه بندی روشن از نقش های پروکسی، قوانین مسیریابی قطعی، کنترل timeout/retray، کش + نرخ محدود، مشاهده به پایان و اتوماسیون.

طبقه بندی پروکسی

پروکسی رو به جلو - ترافیک خروجی مشتریان/خدمات خارج (خروج)، فیلتر/آینه، DLP.
معکوس پروکسی - درخواست های خارجی و مسیرهای به backends (تمرکز اصلی ما) را می پذیرد.

لایه ها در مسیر تولید:

1. لبه/CDN/WAF (Anycast، فیلتر ربات، کش)

2. L7 ورود/API دروازه (مسیریابی، احراز هویت، سیاست)

3. لایه خدمات/مش (sidecar) برای شرق و غرب، mTLS و Retras

4. دروازه خروجی برای ادغام خروجی (PSP، شرکا)

مسیریابی (L4/L7) و الگوریتم ها

L4 (TCP/UDP، عبور از TLS): حداقل تاخیر، بدون درک HTTP.
L7 (HTTP/1) 1, HTTP/2, HTTP/3/gRPC): میزبان/مسیر/هدر/قوانین کوکی, تبدیل, WAF, کش.

الگوریتم ها:
  • گرد رابین/حداقل اتصالات/EWMA - موارد رایج است.
  • Consistent-hash (by cookie/identifier) - جلسات چسبنده و محل حافظه پنهان.
  • Header-/Geo-/Latency-based - هدف قرار دادن منطقه/ارائه دهنده، PoPs سریع.
  • قناری/وزن - مرحله نهایی (5 → 25 → 50 → 100٪).
  • Shadow/Mirroring یک کپی از ترافیک یک سرویس جدید بدون تاثیر بر پاسخ است.

انتقال پرس و جو/پاسخ

URL rewrite/redirect: unify paths, versioning ('/v1/→/svc/v1/').
سرصفحه ها: عادی سازی «X-Forwarded-For/Proto/Host»، اضافه کردن «traceparent »/« x-request-id»، فیلتر غیر ضروری.
CORS/CSRF: در دروازه متمرکز شوید، تنظیمات را در هر سرویس ایجاد نکنید.
فشرده سازی/فشرده سازی: Brotli/gzip، کنترل بر اساس نوع.
محدودیت های بدن و حفاظت در برابر هدر های slowloris/بزرگ.

احراز هویت و امنیت

TLS 1. 3 + OCSP منگنه + HSTS در جبهه های خارجی.
mTLS: مدیران، API های عملیاتی، کانال های شریک.
OAuth2/OIDC: مجوز از طریق دروازه (خودآزمایی نشانه/JWT-verify) → حمل و نقل به ادعاهای در بالادست.
کلید های API/امضا (HMAC) برای خدمات متقابل و ادغام شریک.
فیلترهای WAF/bot: امضاها + قوانین رفتاری، greypass/captcha.
CSP/X-Frame-Options/Referrer-Policy - هدرهای امنیتی در لبه.

قابلیت اطمینان: Retras/Timeouts/TT

زمان بندی: اتصال/خواندن/نوشتن در L4/L7، سیاست واحد (به عنوان مثال، «اتصال 500ms»، «خواندن 3-5s» برای API).
Retrays: تنها idempotent ('GET/HEAD')، محدودیت زمان/مقدار، 'بودجه مجدد'.
Circuit-breaker: محدودیت در درخواست/خطاهای همزمان، شکست سریع و تخریب.
تشخیص دور - موارد بد را از استخر حذف می کند.
Backoff + jitter: به طوری که برای ایجاد یک «اثر گله».

کش و مدیریت ترافیک

کش L7: استاتیک/نیمه پویا (کاتالوگ، پیکربندی)، 's-maxage' + 'stale-while-revalidate'.
Rate-limit/Quota: توسط IP/ASN/دستگاه/کوکی، شمارنده توزیع شده (Redis/Rate-service).
جلسات چسبنده: کوکی/هش سازگار ؛ شکست و «دوباره چسباندن» را در نظر بگیرید.
درخواست فروپاشی (dedupe): حفاظت از منشاء از یک «طوفان» از GETs یکسان است.

پروتکل ها و ویژگی ها

HTTP/2: چندگانه، اولویت ها ؛ «ALPN: H2» را نگه دارید.
HTTP/3/QUIC: مقاومت از دست دادن/لرزش ؛ UDP/443 را باز کنید، MTU/PMTUD را نظارت کنید.
gRPC: چک های بهداشتی، جریان، مهلت ؛ پروکسی ها باید از «grpc-status» پشتیبانی کنند.
WebSocket/SSE: اتصالات طولانی مدت، زمان و محدودیت های بیکار صالح.

💡 > قابلیت مشاهده و SLO
معیارها:
  • L4/L7: 'p50/p95/p99'، ошибки ('4xx/5xx/Grpc-codes')، 'open _ conns'، 'CPS/RPS'، 'retry _ rate'.
  • TLS: نسخه/رمزهای عبور، دست دادن p95، از سرگیری.
  • مسیریابی: سهام توسط مسیر/خوشه، outlier-ejections.
  • نرخ محدود/WAF: باعث/نرخ FP.
  • سیاهههای مربوط: دسترسی (بدون PII)، دلایل مسیریابی، هدر ردیابی.
  • ردیابی: 'traceparent '/B3، نمونه برداری.
SLO (نمونه):
  • p95 TTFB API ≤ 250-300 میلی ثانیه ؛ خطای L7 ≤ 0 5%.
  • موفقیت قناری ها (بدون تخریب معیارها) 99٪ پرتاب ها را ≥ می دهد.
  • WAF نرخ FP ≤ 0. 1%.

پیکربندی های معمولی

Nginx (پروکسی معکوس، HTTP/2، قناری، فشرده سازی)

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 به باطن + نرخ محدود)

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

نماینده (مسیرهای JWT + وزن + تشخیص بیرونی)

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 (مسیرهای مبتنی بر قانون، مفهوم)

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"

عملکرد پروکسی

اتصال اتصال و keepalive به backends، محدودیت اتصال در هر نمونه.
استفاده مجدد، پین CPU/IRQ، بافر سوکت کافی.
TLS: زنجیره های کوتاه ECDSA +، از سرگیری ≥ 70٪، فعال HTTP/2/3.
کش در پروکسی برای «داغ» پاسخ (از جمله 304 اعتبار).
گرم کردن: گرم کردن DNS/TLS/اتصالات قبل از قله.

DR و تحمل خطا

حذف خودکار گرههای تخریب شده («outlier-ejection»).

L4/L7 بررسی سلامتی (HTTP body-version token)

Fail-open/Fail-closed - آگاهانه برای مسیرهای پرداخت/بحرانی انتخاب کنید.
حالت سایه قبل از تغییر ترافیک به یک سرویس جدید.
Runbooks: «فروپاشی خوشه»، «حلقه تغییر مسیر»، «نشت اتصال»، «طوفان retray».

چک لیست پیاده سازی

  • طبقه بندی: لبه → ورود/API-GW → مش/خروج، نقش ها و مسئولیت ها.
  • سیاست های مسیریابی: میزبان/مسیر/هدر/وزن، قناری/آبی سبز، سایه.
  • امنیت: TLS 1. 3، mTLS برای مسیرهای حساس، JWT/OAuth2، WAF.
  • زمان بندی/بازپرداخت/CB: ارزش یکنواخت، idempotency، بودجه مجدد.
  • کش/نرخ محدود/درخواست فروپاشی که در آن مناسب است.
  • قابلیت مشاهده: معیارها/سیاههها/مسیرها، شناسه های همبستگی.
  • SLO: p95/خطاها/منابع ؛ هشدار به شکست محیط.
  • IaC/GitOps: پیکربندی پروکسی مخزن، انتشار canary، بازگشت سریع.
  • تست: مسیرهای E2E، اسکریپت هرج و مرج، بار قبل از حوادث.

خطاهای رایج

یک harvester پروکسی «سحر و جادو» بدون جدایی نقش → RCA پیچیده و شعاع انفجار بالا.
Retrays for non-idempotent queries → معاملات تکراری.
بدون نرمال سازی هدر/URL → مسمومیت کش و کلیدهای بد.
جلسات چسبنده بدون برنامه های شکست خورده → چسبیدن به یک نمونه تخریب شده.
گمشده «traceparent »/« x-request-id» → نمی تواند مشکلات را مرتبط کند.
301/302 سخت در سطح پروکسی → حلقه ها و از دست دادن کنترل نسخه API.

iGaming/fintech خاص

پرداخت/PSP: خروجی اختصاصی دروازه با mTLS، زمان بندی دقیق، کلید های idempotent، لیست های سفید IP/ASN.
قله (مسابقات/مسابقات): canary/وزن, مسیرهای خاکستری برای رباتها, تهاجمی کش GET, دفاع در برابر منشاء «طوفان».

مقررات/ورود به سیستم: رفع نسخه های سیاست و دلایل مسیر در سیاهههای مربوط به ممیزی ؛ PII را کاهش دهید

ارائه دهندگان محتوا: هش سازگار توسط کلید ارائه دهنده برای محل کش و حتی توزیع.

کتاب های مینی

1) انتشار API قناری

1. شامل 5٪ وزن در «api-canary» ؛ 2) نظارت بر p95/خطا ؛ 3) گسترش سهم ؛ 4) بازگشت خودکار در طول تخریب.

2) حذف اضطراری گره تخریب شده

1. تخلیه خارج یا «تخلیه» دستی ؛ 2) بررسی استخر و ضربه کش ؛ 3) RCA پس از حادثه.

3) عملکرد معکوس

1. فعال کردن سایه بدون تاثیر بر پاسخ ؛ 2) مقایسه متریک/پاسخ تفاوت ؛ 3) تصمیم گیری در مورد تغییر.

4) طوفان Retray

1. محدودیت های بودجه/زمان مجدد را کاهش دهید. 2) فعال کردن درخواست فروپاشی ؛ 3) خرد/کش محلی ؛ 4) ثبات منشاء.

نتیجه گیری

یک لایه پروکسی خوب طراحی شده، جداسازی نقش، مسیریابی قطعی، سیاست های قابل اعتماد (زمان بندی/بازپرداخت/CB)، امنیت (mTLS/JWT/WAF) و مشاهده پذیری است. پیکربندی پین به IaC، استفاده از canaries و سایه، اندازه گیری SLO - و پلت فرم خود را مقیاس پذیر، قابل پیش بینی و امن حتی در طول داغترین ساعت اوج خواهد بود.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.