在本站中
本站是开源的,仓库在 yuxuetr/rustineverything。这一部分的链接都指向提交 ceffc19(2026-10-31),行号以它为准。本站锁的是 tower-http 0.6.11,和本卷的 0.7.1 不同,所以实测分两步:对开发服务器发只读请求看 0.6.11 的现状,再用实验 crate 复现同样的层组合,对照 0.7.1。
- 用到的两样与手写的四样:
CompressionLayer只开 gzip、br;ServeDir在nest_service下的目录跳转丢前缀、超长文件名回 500 且没有日志。体积上限、安全头、尾斜杠、/js的缓存头为什么手写:前两样有真实的理由(按路径分上限;0.6.11 的多头层在 axum 里编译不过),尾斜杠要 308 而不是改写,缓存头换不换都行。 - 升到 0.7.1 会怎样:依赖树里另外三个 crate 都要求
^0.6.8,所以先不升;#678、#693、#691、#727、#661、#718 逐条对本站实测;CsrfLayer只给评估。
flowchart TB site["本站 app"] --> used["用到:CompressionLayer、ServeDir"] site --> hand["手写:体积上限、安全头、尾斜杠、缓存头"] used --> up["升级差异"] hand --> up up --> deps["依赖树:dioxus、reqwest 要求 ^0.6.8"]
网关不用 tower,用 Pingora 的钩子组织逻辑,tower 卷 中间件栈 的最后一节已经讲过,这里不重复。
💬 关联讨论
发起讨论加载中...