feat(extension): Firefox 包改为优先供给数据卷里的 AMO 已签名包

正式版 Firefox 要求扩展经 AMO 签名,未签名一律拒绝且报成「插件损坏」。
签名包不进镜像:它是 AMO 针对具体内容生成的产物,提交进仓库会与源码脱节
(改代码就得重新签名)且是二进制。放数据卷可跨部署存活,更新只覆盖一个文件。
数据卷没有时回落镜像内未签名包(开发/调试仍可用)。

实测三条路径(本地 nginx 沙箱,nginx -t + 真实请求):
  数据卷有签名包 → SIGNED;数据卷无 → 回落镜像内未签名包;两者都无 → 404。
注:用 root 而非 alias,因为 alias 配 try_files 会把 URI 再拼一次导致 404。
This commit is contained in:
JianFeeeee
2026-10-03 08:19:17 +08:00
parent 5fa35cd7ea
commit 1d86e81d42

View File

@ -140,6 +140,24 @@ http {
rewrite ^ /extension/install.html last;
}
# Firefox 扩展包:优先用数据卷里的 **AMO 已签名包**。
# 为什么不直接把签名包打进镜像:签名是 AMO 针对具体内容生成的产物,
# 提交进仓库既会与源码版本脱节(改代码就得重新签名),又是二进制。
# 放进数据卷则能跨部署存活,需要更新时覆盖这一个文件即可。
# 数据卷里没有(还没签名/没上传)时回落到镜像内的未签名包。
# 这里用 root 而非 alias:alias 配 try_files 会把 URI 再拼一次,
# 实测容易 404。root=/app/data 时 $uri=/extension/navi-firefox.xpi
# 正好解析成 /app/data/extension/navi-firefox.xpi。
location = /extension/navi-firefox.xpi {
root /app/data;
try_files $uri @firefox_xpi_image;
}
location @firefox_xpi_image {
root /app/dashy;
try_files $uri =404;
}
# 容器健康检查(部署脚本与 Docker HEALTHCHECK 使用)
location = /healthz {
proxy_pass http://127.0.0.1:3005/healthz;