GH GambleHub

Proxy图层和反向路由

简短摘要

代理层是平台的"前端总线":它完成TLS,认证客户,分布流量,平滑峰值并使发布安全(金丝雀,蓝绿色)。最小成熟度集:清晰的代理角色分层,确定性的路由规则,时空/后继控制,kesh+rate-limit,端到端可观察性和自动化。

代理分类法

Forward proxy-客户端/服务出站(egress)、过滤器/镜像、DLP。
反向验证-接受外部请求并路由到后端(我们的主要重点)。

prod轮廓中的图层:

1.Edge/CDN/WAF(Anycast,机器人过滤器,kesh)

2.L7 入口/API网关(路由、身份验证、策略)

3.服务层/Mesh (sidecar)用于东西方、mTLS和retrais

4.用于出站集成的Egress-gateway (PSP,合作伙伴)

路由(L4/L7)和算法

L4 (TCP/UDP, passthrough TLS):最小延迟,不了解HTTP。
L7 (HTTP/1.1,HTTP/2,HTTP/3/gRPC):关于主机/path/header/cookie,转换,WAF,kesh的规则。

算法:
  • Round-robin/Least-connections/EWMA是常见病例。
  • Consistent-hash(通过cookie/ID)是sticky会话和缓存本地性。
  • Header -/Geo -/Latency-按区域/提供商定位,快速PoP。
  • 金丝雀/重量级-分阶段滚动(5→25→50→100%)。
  • Shadow/Mirroring-将流量复制到新服务而不会影响响应。

请求/响应转换

URL rewrite/redirect:统一路径、转换('/v1/ →/svc/v1/')。
标题:标准化"X-Forwarded-For/Proto/Host",添加"traceparent"/"x-request-id,过滤更多。
CORS/CSRF:集中在网关中,不要在每项服务中实现设置。
Compression/Decompression:brotli/gzip,类型控制。
身体极限和防慢速起搏器/超速起搏器。

身份验证和安全性

TLS 1.3+OCSP stapling+HSTS在外侧。
mTLS:管理,操作API,合作伙伴渠道。
OAuth2/OIDC:通过网关(token introspection/JWT-verify)获得授权→在上游进入气候。
用于服务间和合作伙伴集成的API密钥/签名(HMAC)。
WAF/机器人过滤器:签名+行为规则,greypass/kapcha。
CSP/X-Frame-Options/Referrer-Policy是边缘的安全标题。

可靠性: retrai/taymout/SV

Taymauts: connect/read/write on L4/L7,单一策略(例如"connect 500 ms"、"read 3-5s" for API)。
Retrai:仅偶数("GET/HEAD"),时间/数量限制,"retry-budget"。
电路断路器:对同时查询/错误、快速故障和退化的限制。
Outlier检测:从池中排除"不良"实例。
Backoff+Jitter:不创建"牛群效应"。

Kesh和流量管理

Kesh L7:静态/半动力学(目录,configs),"s-maxage"+"stale-wile-revalidate"。
Rate-limit/Quota:通过IP/ASN/device/cookie,分布式计数器(Redis/Rate-service)。
Sticky会话:cookie/consistent-hash;考虑故障转移和"重铺"。
请求碰撞(dedupe):保护起源免受相同的GET的"风暴"。

协议和功能

HTTP/2:多路复用,优先次序;保持"ALPN:h2"。
HTTP/3/QUIC:抵御损失/紧张;打开UDP/443,留意MTU/PMTUD。
gRPC: health-checks, streaming, deadlines;代理必须支持"grpc-status"。
WebSocket/SSE:长寿命连接器,熟练的idle-mayout和限制。

可观察性和SLO

度量标准:
  • L4/L7: `p50/p95/p99`, ошибки (`4xx/5xx/Grpc-codes`), `open_conns`, `CPS/RPS`, `retry_rate`.
  • TLS:版本/密码,p95 handshake, resumption。
  • 路由:沿路线/集群的份额,outlier ejections。
  • Rate-limit/WAF: 触发/FP-rate。
  • Logs:访问(没有PII),路由原因,跟踪标题。
  • Traces: "traceparent"/B3, sampling。
SLO(示例):
  • p95 TTFB API ≤ 250-300毫秒;L7 ≤ 0错误。5%.
  • 加那利群岛的成功(没有指标降解)≥ 99%的发射。
  • FP-rate WAF ≤ 0.1%.

类型configs

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 to backend+ 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(基于规则的路由,概念)

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"

代理性能

连接并保持到后端,连接限制为实例。
Reuseport,pin CPU/IRQ,足够的套接字缓冲区。
TLS: ECDSA+短链,resumption ≥ 70%, HTTP/2/3包括在内。
缓存到"热"响应的代理中(包括304验证)。
Warm-up:在峰前加热DNS/TLS/Connects。

DR和容错能力

降级节点的自动对接("outlier-ejection")。
健康检查L4/L7(HTTP身体标记版本)。
Fail-open/Fail-closed-有意识地选择支付/关键路径。
在将流量切换到新服务之前进行阴影模式。
Runbooks:"群落崩塌","重定向循环","连接泄漏","重定向风暴"。

实施支票

  • 分层:Edge → Ingress/API-GW → Mesh/Egress,角色和责任界限。
  • 路由策略:host/path/header/weight, canary/blue-green, shadow。
  • 安全:TLS 1.3、mTLS用于敏感路径,JWT/OAuth2 WAF。
  • Taymauts/retrai/SV:统一值,幂等,retry-budget。
  • Kesh/Rate-limit/Request-collapsing在适当的时候。
  • 可观察性:度量/logi/traces,correlation id。
  • SLO:p95/错误/资源;外围故障的差异。
  • IaC/GitOps:存储库中的代理组合、金丝雀版本、快速回滚。
  • 测试:e2e路线、溷沌场景、载荷前。

典型错误

没有角色划分的"魔术"代理收割机→复杂的RCA和高爆炸半径。
非偶数请求的转发→重复的事务。
没有标题/URL归一化→ cache-poisoning和错误密钥。
没有失败计划的sticky会话→降级实例。
缺乏"traceparent"/"x-request-id" →无法解决问题。
在代理级别刚性301/302 →"环路"和API版本控制丢失。

iGaming/fintech的细节

付款/PSP:带有mTLS的专用egress-gateway,严格的计时器,偶数密钥,白色IP/ASN列表。
高峰(比赛/锦标赛):金丝雀/重量,机器人灰色路线,激进的kesh GET,防御起源"风暴"。
调节/逻辑:在审计逻辑中捕获策略版本和路由原因;最小化PII。
内容提供商:通过提供商密钥来进行缓存本地性和均匀分发。

迷你花花公子

1)金丝雀API发行版

1.在"api-canary"上包括5%的权重;2)监视p95/错误;3)扩大份额;4)降解时自动退货。

2)紧急拆除退化的节点

1.Outlier-ejection或手动"drain";2)检查池和kesh命中;3)事后RCA。

3)功能镜像

1.启用影子而不影响响应;2)比较响应的度量/深度;3)决定切换。

4)风暴撤退

1.降低背包/时间限制;2)启用request-collapsing;3)本地存根/缓存;4)稳定起源。

结果

设计良好的代理层是角色划分,确定性路由,强大的策略(taymout/retrai/SV),安全性(mTLS/JWT/WAF)和可观察性。将配置固定在IaC中,使用金丝雀和影子,测量SLO-即使在最热的高峰时段,您的平台也将具有可扩展性,可预测性和安全性。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。