HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • 代理技术全栈手册

    • 代理技术全栈手册 - HiHuo
    • 原理篇

      • 第01章 代理是什么:正向 / 反向 / 透明 / 隧道的统一模型
      • 第02章 代理与网络层级:L3 / L4 / L5 / L7 在哪里截断流量
      • 第03章 一个请求穿过代理的一生:连接生命周期全景
    • 协议篇

      • 第04章 HTTP 代理协议:绝对 URI、CONNECT 隧道、转发头与连接池
      • 第05章 HTTPS 与 TLS 代理:终止 / 透传 / MITM / SNI / mTLS
      • 第06章 SOCKS 协议:SOCKS4/4a/5 与 UDP ASSOCIATE 报文级解析
      • 第07章 HTTP/2、gRPC 与 HTTP/3(QUIC) 代理的挑战
      • 第08章 代理自动配置:PAC / WPAD / 系统代理 / NO_PROXY
    • 层级与转发篇

      • 第09章 L4 代理:TCP/UDP 转发与连接级负载均衡
      • 第10章 L7 代理:协议感知与基于内容的路由
      • 第11章 透明代理:iptables REDIRECT/DNAT、TPROXY 与 eBPF 劫持
      • 第12章 数据搬运的艺术:splice / sendfile / 零拷贝 / io_uring
    • 组件横评篇

      • 第13章 Nginx / OpenResty:反向代理、upstream 与 Lua 可编程
      • 第14章 HAProxy:L4/L7、ACL、健康检查与 stick table
      • 第15章 Envoy:xDS 动态配置与 filter chain,为何是云原生数据面
      • 第16章 Traefik / Caddy:自动服务发现与自动 HTTPS
      • 第17章 Squid 与正向/缓存代理:企业出网、缓存与审计
      • 第18章 mitmproxy:抓包、改包、脚本化调试
      • 第19章 内网穿透与隧道:frp / gost / SSH 隧道 / ngrok
      • 第20章 科学上网生态的技术原理(技术中立)
    • 多语言手写篇

      • 第21章 Go:100 行手写 HTTP/CONNECT + SOCKS5 代理
      • 第22章 Rust:基于 tokio 的高性能 TCP 代理
      • 第23章 Python:asyncio 实现,适合调试与脚本
      • 第24章 C:epoll 裸写与零拷贝,及语言选型对比
    • 容器与K8s篇

      • 第25章 Docker 里的代理:HTTP_PROXY、build/pull 与 daemon 配置
      • 第26章 Sidecar 与流量劫持:Istio init-container 的 iptables 原理
      • 第27章 Ingress 与南北流量:Ingress-nginx 与 Gateway API
      • 第28章 Egress 与出网治理:出口网关、registry mirror、审计
      • 第29章 Service Mesh 数据面:Envoy Sidecar 全链路
    • 进阶篇

      • 第30章 可编程代理:Lua / Wasm / eBPF / xDS,代理的"软件定义"
      • 第31章 性能调优:并发模型、连接池、超时与重试、压测
      • 第32章 排错决策树:502 / 504 / 握手失败 / 环路 / 泄漏
      • 第33章 代理安全:开放代理、SSRF、凭证泄漏与攻击面
    • 底层机制篇

      • 第34章 代理的背压与流控:一个代理最难的部分
      • 第35章 socket 与 TCP 状态机:半关闭、超时、连接生命周期
      • 第36章 HTTP/2 帧、流控与 HPACK:h2 代理的内部机制
      • 第37章 负载均衡算法推导与韧性状态机
      • 第38章 Capstone:把玩具代理改造成生产级骨架
    • 综合实战篇

      • 第39章 企业多跳转发链:拓扑、协议矩阵与贯穿性难题
      • 第40章 端到端实战:把 6 类流量全代理通
      • 第41章 更刁钻的流量:gRPC、长轮询、WebRTC、大文件、双向流
      • 第42章 可落地完整参考实现:一套能跑的多协议转发栈
    • 附录

      • 附录 A:代理协议报文速查(HTTP / SOCKS / PAC / PROXY protocol)
      • 附录 B:组件选型决策树
      • 附录 C:抓包与命令速查

附录 B:组件选型决策树

把全书的选型判断收成可操作的决策流程。每个分支都标注了对应章节。


一、代理类型选择(第01章)

我要解决什么问题?
├─ 让内网客户端统一出网/审计/缓存 ──────▶ 正向代理(Squid,第17章)
├─ 给服务端做门面/负载均衡/TLS 卸载 ────▶ 反向代理(Nginx/HAProxy/Envoy)
├─ 客户端零配置、内核劫持流量 ──────────▶ 透明代理(iptables/TPROXY,第11章)
├─ 通用隧道任意 TCP/UDP ────────────────▶ SOCKS5 / CONNECT 隧道(第06章)
└─ 内网服务暴露到公网 ──────────────────▶ 反向隧道穿透(frp/ssh -R,第19章)

二、L4 还是 L7(第02章/09/10)

需要看/改应用层内容吗(按 URL/Header 路由、改写、缓存)?
├─ 否,只是转发任意 TCP/要极致性能 ─────▶ L4(HAProxy tcp / LVS / socat)
│     └─ 要按域名分流 HTTPS 但不解密? ──▶ L4 + SNI 嗅探(ssl_preread,第02章)
└─ 是,要路由/改写/治理 ────────────────▶ L7(Nginx/Envoy/HAProxy http)
      └─ 注意:gRPC/长连接负载不均 → 必须 L7 请求级(第09章陷阱)

三、TLS 处理方式(第05章)

代理要不要看 HTTPS 明文?
├─ 不要(保持端到端加密) ──▶ 透传(passthrough / SNI 路由)
├─ 要(反向代理,我持有证书) ──▶ TLS 终止(卸载)
│     └─ 内网也要加密? ──▶ 重加密(两段 TLS)
└─ 要(正向,我没有源站证书) ──▶ MITM(需客户端信任 CA;受 HSTS/锁定限制)

四、反向代理组件选型(第13-16章)

你的核心诉求?
├─ 通用/静态文件/成熟稳定 ──────────────▶ Nginx(第13章)
│     └─ 要 Lua 可编程 ──▶ OpenResty
├─ 专业负载均衡/强健康检查/限流 ────────▶ HAProxy(第14章)
├─ 云原生数据面/动态配置/gRPC/Mesh ─────▶ Envoy(第15章)
├─ 容器环境自动服务发现 ────────────────▶ Traefik(第16章)
└─ 个人站点/要自动 HTTPS ───────────────▶ Caddy(第16章)

五、正向/调试/穿透组件(第17-20章)

├─ 企业出网网关/缓存/审计 ──▶ Squid(第17章)
├─ 抓包改包调试 HTTPS ──────▶ mitmproxy(第18章)
├─ 内网穿透 ────────────────▶ frp(专业)/ ssh -R(临时)/ ngrok(SaaS)(第19章)
└─ 加密代理 + 分流 ─────────▶ Clash/sing-box(第20章,技术中立)

六、自己写代理用什么语言(第21-24章)

├─ 又要性能又要开发快/单体代理 ──▶ Go(Traefik/frp/Clash 都是)
├─ 极致性能 + 内存安全 + 长期运行 ──▶ Rust(pingora)
├─ 调试工具/原型/控制面/中低流量 ──▶ Python(mitmproxy)
└─ 性能极限/嵌入现有 C 生态 ────────▶ C/C++(Nginx/HAProxy/Envoy)

黄金律:数据面要快(C++/Rust/Go),控制面要开发快(Go/Python)(第24章)

七、Kubernetes 流量怎么治(第25-29章)

├─ Docker 拉镜像走代理 ──▶ daemon 代理(systemd drop-in,第25章)
├─ 外部→集群(南北流量)──▶ Ingress / Gateway API(第27章)
├─ 服务间(东西流量)──────▶ Service Mesh / Envoy sidecar(第26/29章)
├─ 集群→外部(出网治理)──▶
│     ├─ 按 IP 限制 ──▶ NetworkPolicy
│     ├─ 按域名 ──────▶ Cilium FQDN / Istio ServiceEntry
│     ├─ 审计+缓存 ────▶ 集群内 Squid 正向代理
│     └─ 固定出口 IP ──▶ Egress Gateway + SNAT(第28章)
└─ 要不要 sidecar? ──▶ 省资源用 Ambient(ztunnel+waypoint,第26章)

八、常见场景 → 推荐方案速查

场景推荐章
网站前置反代 + TLS 卸载Nginx / Caddy13/16
数据库/TCP 负载均衡HAProxy mode tcp / LVS14/09
微服务东西流量治理Istio + Envoy29
K8s 集群入口Ingress-nginx / Gateway API27
企业统一出网审计Squid 正向代理17
调 API / 抓移动端mitmproxy18
把开发机服务给外部看ngrok / frp19
高吞吐自研网关Envoy / 自写 Rust15/22
Prev
附录 A:代理协议报文速查(HTTP / SOCKS / PAC / PROXY protocol)
Next
附录 C:抓包与命令速查