TLS 在哪一跳结束
TLS 终止点决定加密在哪一跳结束。常见做法有两种:在边缘(负载均衡或 CDN)终止 TLS,后端走明文;或者让加密直达后端,也就是透传。还有一种折中是边缘终止后再建一条 TLS 连接回源,即再加密。三种方式在合规、排障与证书管理上思路完全不同,选择前要先明确威胁模型与审计要求。
基本信息
| 边缘终止 | 入口统一管理证书与套件,后端省 CPU;内网需额外防护或再加密 |
|---|---|
| 透传 | 加密直达后端,负载均衡读不到 HTTP 内容,证书责任在后端 |
| 再加密 | 边缘终止后再建立 TLS 回源,兼顾检查能力与链路加密 |
| 转发头 | 终止场景需传递 X-Forwarded-Proto 与客户端地址 |
| 排障差异 | 透传模式下负载均衡与日志看不到 HTTP 状态码 |
| 合规要求 | 支付与医疗场景常要求内网也加密 |
典型使用场景
- 入口统一治理:在边缘集中管理证书与套件策略
- 端到端加密:监管或客户要求链路全程加密时选择透传
- 混合方案:边缘终止用于业务检查,回源再加密保护内网
- 排查跳转异常:应用生成 http 链接时先检查转发头
- 容量规划:终止点决定了 CPU 消耗落在哪一跳
nginx 转发头配置要点
nginx 转发头配置要点
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
# 后端生成绝对 URL 时依赖以上头,否则会出现 http 链接回跳
# 透传模式下这些头无法由负载均衡改写,需要后端自行处理三种模式对照
| 维度 | 边缘终止 | 透传 | 再加密 |
|---|---|---|---|
| 证书位置 | 边缘 | 后端 | 边缘与后端各一份 |
| 内网明文 | 是 | 否 | 否 |
| 边缘可读内容 | 可读 | 不可读 | 可读 |
| 排障便利性 | 高 | 低 | 中 |
| 资源开销 | 低 | 中 | 高 |
合规场景(支付、医疗)常要求内网也加密;纯内网可信网络可以把算力留给业务。选择前先明确威胁模型与审计要求。
透传模式要提前设计排障方式:负载均衡看不到 HTTP 状态码与响应头,问题定位只能依赖后端日志与链路追踪。
边缘终止后必须正确传递客户端信息:忘记传 X-Forwarded-Proto 会让应用生成 http 链接,登录跳转与回调地址都可能出错。