GH GambleHub

リバースプロキシとルーティング

1)リバースプロキシの役割

リバースプロキシ-プラットフォームの「最前線」:TLSを受け入れ、上流の間でトラフィックを分配し、セキュリティとパフォーマンスのポリシーを適用します。目標は、最小のレイテンシ、予測可能なルーティング、劣化するインスタンス/ゾーンの迅速な分離です。

2)層および議定書

L4: TCP/UDPプロキシ(SNIベースのTLSパススルー、QUIC)。HTTPを理解せずに低価格。
L7: HTTP/1。1-2-3、 gRPC、 WebSocket。豊富なルーティング(ホスト、パス、ヘッダー、クッキー)、変換とキャッシュ。

TLSモデル:周囲の終端(NGINX/Envoy)、内部-mTLS/mesh。SNIは、同じIP上の仮想ホストを許可します。

3)ルーティング戦略(L7)

1.ホストベース:by domain ('api。ブランド。com'→cluster' brand-api')。
2.パス・ベース:'/v1/payments'→'payments-svc'、'/v1/wallets'→'wallets-svc'。
3.ヘッダーベース:'X-Region: eu-central'、 'X-Tenant: 42'、 'User-Agent'/'Accept'。
4.クッキーベース:A/Bテスト、粘着性のあるセッション。
5.加重/カナリア:新しいバージョンへのトラフィックの割合(1-5%→100%)。
6.Geo/ASN:最寄りのPOP/regionに送信される国/ASNによって。
7.一貫性のあるハッシュ:キー(user_id/tenant_id)をインスタンス→キャッシュの局所性/粘着性にバインドします。
8.Shadow/Mirroring:(回帰テストの場合)応答に影響を与えることなく、上流の「shadow」にトラフィックをコピーします。

4)バランスをとることおよび欠陥の許容

アルゴリズム:round-robin、 lost-request、 random、 ring-hash (consistent)。
ヘルスチェック:アクティブ(HTTP/TCP)+パッシブ(コード/タイムアウトによる)。
アウトリアイジェクション:エラー/レイテンシーが増加したホストを一時的に「ノックアウト」します。
再試行:制限があり、試行あたりのタイムアウトとジッタがあります。idempotencyなしで安全でないメソッドをリトラクトしないでください。
接続プール:上流に暖かいプールを保って下さい、最高を限って下さい。

5)周囲の性能

キャッシュ:キー(メソッド+ホスト+パス+Vary)、 'ETag/If-None-Match'条件、TTLおよびstale-while-revalidate。
圧縮:テキスト応答のためのbrotli/gzip。
HTTP/2/3:多重化、ヘッダー圧縮;WAF/IDSの互換性を確認します。
「複合要求」(Request coalescing)-同じキャッシュキーの同時リクエストを折りたたみます。

6)プロキシの保証

TLS: 1。2+(1より優れています。3)、 OCSPのステープリング、HSTS。
WAF/botフィルタ:アプリにルーティングする前に。
CORS/CSP/Fetch-Metadata:ポリシーに従って。
Header-# 39; 'X-Forwarded-For/Proto'、 'Forwarded'、 'traceparent';ヘッダー注入およびサイズ超過の保護。
Body/headers limits: DoSパターンの初期の413/431。
パートナーインテグレーションと内部APIのためのmTLS。

7)展開スキーム: カナリア/ブルーグリーン/バージョン

重み付けルーティングレベル7(1%、5%、25%、50%、100%)。
Header-gate:フラグ/ヘッダー(内部/テスト)で機能を有効にします。
ブルーグリーン:フルDNS/ルートスイッチング、高速ロールバック。
Shadow:メトリック/ログのエントリを持つ新しいバージョンの並列実行。

8)粘着性があるセッションおよびハッシュルーティング

Cookie-stickiness ('Set-Cookie: SRV=shard-a;パス=/;ステートフルロードのためのHttpOnly')。
'user_id/tenant_id'によるRing-hash/consistent-キャッシュの相互障害を軽減します。
注意:書き込み負荷→ホットスポットのための「永遠の」粘着性を避けてください。クォータテナントを使用します。

9)地域とジオルーティング

Anycast+geo-DNSで最寄りのPOPを選択します。
テストとデバッグのためのヘッダー-オーバーライド(例えば、'X-Region')。
法的に必要なデータローカライズ(地域/管轄によるルート)と連携します。

10)観察可能性および制御

REDメトリクス:RPS、 error-rate(クラス別)、latency p95/p99 per-route/cluster。
Outlier/health:編集回数/再失数、スローコールレート。

ログ: 構造化、PIIなし;相関'trace_id'/'span_id'

トレース(OTel): ingress→router→upstream;p99グラフの例です。

11)構成例

11.1 NGINX:ホスト/パス/重み付け+кэш

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:ヘッダー・ルーティング、カナリア、アウトリエ・イジェクション、ミラーリング

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:ルール+ミドルウェア

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+manifesto (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)変換と互換性

ヘッダー/パスの正規化、'Location'センサス、'Cache-Control'コントロール。
gRPC ↔翻訳者(grpc-json-transcoder)によるHTTP/JSONです。
WebSocket/HTTP2 upgrades-プロキシが'Upgrade'/'Connection'をスキップしていることを確認します。

13)テストとカオスシナリオ

ローディング:バースト、長い台地「、長い」ボディ(slow-POST)。
アップストリームへの遅延/損失注入→リトライ/タイムアウト/アウトリアチェック。
カナリアメトリクス:p95/p99、新しいバージョンと古いバージョンのエラー率;SLOによる自動ロールバック。
Shadow:レスポンス(サンプリング)とサイドバイサイドロジックの比較。

14) Antipatterns

idempotencyと期限→doublesとstormを除くグローバルなリトリート。
ホットシャード制御のない粘着性のあるセッション→ロードスキュー。
プール内のヘルスチェック/アウトリアイジェクション→「腐った」インスタンスの欠如。
無制限のヘッダー/ボディ→最も単純なDoS。
スキーマバージョン→予期しないリグレッションのない変換とセキュリティを混在させます。
'Vary'→不正確な応答を持たない単一のグローバルキーキャッシュ。

15) iGaming/Financeの詳細

地域:プレーヤー/ブランド管轄によるルーティング;支払地帯の分離。
重要なルート(預金/出力):短いタイムアウト、1つの繰り返し、idempotency;個々のクラスター。
PSP/KYC:専用のアップストリームプール、厳格な再試行/タイムアウトポリシー、サーキットブレーカ、ジオピン。
ABチャンネル:読み込みパスのみの支払い/制限を伴う安全な実験。書き込み-フラグと小さなパーセンテージを介して。

16) Prod Readinessチェックリスト

  • TLS 1。2+/1.3のOCSPのステープリング、HSTS;'X-Forwarded-'を修正しました。
  • ルーティングルールをクリア:host/path/header/cookie;ドキュメントを作成します。
  • ヘルスチェック、アウトリアイジェクション、トライごとのタイムアウト、制限されたリトレイ。
  • 加重/カナリア+影;SLO/alertによる自動ロールバック。
  • キャッシュ/圧縮/ETag;body/headers limits;融合を要求して下さい。
  • 'trace_id'を使用したログ/トレイル;RED+アウトリエ/健康指標;route/clusterごとのダッシュボード。
  • WAF/ボットフィルタ/CORS;oversizeおよび遅いPOSTの保護。
  • 必要に応じて粘着性のある/一貫したハッシュ;ホットシャードコントロール。
  • コンフィギュレーションはバージョン管理され、移行は安全であり、KMS/Vaultでは秘密です。

17) TL;DR(ドクター)

周囲のTLSを終了し、host/path/header/cookieを介してL7にルートします。リリースの場合-加重カナリアと影;安定性のために-ヘルスチェック、アウトリアイジェクション、試行あたりのタイムアウトに制限されたリトライ。p95を改善するキャッシュ、圧縮、一貫性のあるハッシュを使用します。RED信号とクラスタの状態を測定し、WAFとサイズ制限を保持します。Critical Payment Routeの場合、クラスタ、短いSLA、およびretras/idempotencyの厳格な管理が分離されます。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。