要让Nginx对HTTPS后端缓存加速,必须同时启用四项SSL校验指令:proxy_ssl_verify on、proxy_ssl_trusted_certificate、proxy_ssl_name、proxy_ssl_server_name;禁用TLS会话复用(proxy_ssl_session_reuse off),并合理配置缓存路径与键值。

要让 Nginx 对 HTTPS 后端站点做缓存加速,关键不是简单打开 proxy_cache,而是确保整个链路——从 TLS 连接建立、证书校验,到响应缓存与复用——全部安全、可控且不互相干扰。HTTPS 后端的缓存比 HTTP 更敏感,稍有配置疏漏就可能跳过证书验证、复用错误 session,或缓存不安全响应。
必须启用的四项 SSL 校验指令
仅设置 proxy_pass https://... 不会自动校验证书;Nginx 默认信任所有上游证书(等同于关闭验证)。要真正启用校验,以下四条指令必须同时出现在同一个 location 块中:
-
proxy_ssl_verify on;—— 开启上游证书验证开关 -
proxy_ssl_trusted_certificate /etc/nginx/ssl/upstream-ca.crt;—— 指向纯净 PEM 格式的根+中间 CA 证书链(不含私钥、不含终端证书) -
proxy_ssl_name "api.example.com";—— 显式指定期望的证书主题备用名(SAN),尤其当proxy_pass使用 IP 或变量时不可省略 -
proxy_ssl_server_name on;—— 强制发送 SNI 扩展,否则云服务、CDN 或泛域名后端常拒绝连接
避免缓存破坏证书校验的三项关键禁用
启用 proxy_cache 后,Nginx 可能复用 TLS session 或跳过连接重建,导致证书校验被绕过。需显式关闭这些行为:
阿里百炼大模型平台多人共享账号用量统计代理服务。解决公司共用账号时无法区分个人用量的问题。适用场景:1)部署用量统计代理;2)统计多人Token用量和调用次数;3)管理大模型API调用配额。
-
proxy_ssl_session_reuse off;—— 禁用 TLS session 复用,保证每次代理请求都新建连接并完整执行证书链校验 -
proxy_ssl_verify_depth 3;—— 默认只校验终端证书→根证书一层,但多数三方服务返回终端+一级中间证书,设为 3 更稳妥 -
proxy_ssl_protocols TLSv1.2 TLSv1.3;—— 明确禁用 TLSv1.0/1.1,防止协议降级干扰校验逻辑或触发不兼容行为
缓存路径与策略的协同配置
SSL 校验通过只是前提;缓存本身需独立定义、合理分区,并与校验上下文对齐:
- 在
http块中定义缓存区:proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_https_cache:50m max_size=5g inactive=30m use_temp_path=off; - 在
location中启用并绑定:proxy_cache my_https_cache; - 使用稳定缓存键(避免因 header 差异导致重复缓存):
proxy_cache_key "$scheme$proxy_host$request_uri"; - 按状态码分级缓存时间,例如:
proxy_cache_valid 200 302 10m;<br>proxy_cache_valid 404 1m;<br>proxy_cache_valid 500 502 503 504 10s;
不建议全局设置,也不推荐混用 HTTP/HTTPS 缓存区
proxy_ssl_* 指令只在 location 或 upstream 上下文中生效,不能写在 http 或 server 块顶层;否则会被忽略。同样,HTTPS 后端的缓存应与 HTTP 后端分离——共用同一 keys_zone 可能因校验逻辑差异引发未预期行为。建议为 HTTPS 后端单独命名缓存区(如 my_https_cache),便于监控和清理。

















