Files
Genarrative/deploy/nginx

Genarrative Nginx compression policy

本配置片段由 scripts/jenkins-server-provision.sh 在安装 Nginx 站点配置时展开。

gzip

  • deploy/nginx/genarrative.confdeploy/nginx/genarrative-dev-http.conf 默认开启 gzip。
  • 覆盖 application/json,用于降低 /api/runtime/*/gallery 这类 JSON 列表接口的公网带宽占用。
  • 当前推荐等级为 gzip_comp_level 5,兼顾 2C/2G 服务器 CPU 与压缩收益。

Brotli

  • Brotli 只在目标服务器 Nginx 接受 brotli 指令时开启。
  • Provision 脚本通过临时配置执行 nginx -t 做能力探测;探测配置会先 include /etc/nginx/modules-enabled/*.conf,避免 Ubuntu 动态模块已安装但测试配置未加载模块导致误判。可用时把模板中的 # __GENARRATIVE_BROTLI_DIRECTIVES__ 替换为 brotli 指令,不可用时保留注释说明。
  • 不要直接在静态模板里无条件写 brotli on;,否则没有 brotli 模块的服务器会 nginx -t 失败并回滚。
  • 不要用 nginx -V | grep brotli 判断 brotli 是否可用Ubuntu apt 安装的 brotli 是动态模块,可能只出现在 nginx -Tload_module 配置里。

验证

curl -sSI -H 'Accept-Encoding: gzip' \
  http://<host>/api/runtime/puzzle/gallery \
  | grep -iE 'content-encoding|vary|content-type|content-length'

curl -sSI -H 'Accept-Encoding: br' \
  http://<host>/api/runtime/puzzle/gallery \
  | grep -iE 'content-encoding|vary|content-type|content-length'

预期:

  • gzip 可用时返回 Content-Encoding: gzip
  • br 可用时返回 Content-Encoding: br
  • 响应头应包含 Vary: Accept-Encoding