35 lines
1.6 KiB
Markdown
35 lines
1.6 KiB
Markdown
# Genarrative Nginx compression policy
|
||
|
||
本配置片段由 `scripts/jenkins-server-provision.sh` 在安装 Nginx 站点配置时展开。
|
||
|
||
## gzip
|
||
|
||
- `deploy/nginx/genarrative.conf` 与 `deploy/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 -T` 的 `load_module` 配置里。
|
||
|
||
## 验证
|
||
|
||
```bash
|
||
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`。
|