我想使用 NGINX 启用 GZIP 和Brotli压缩。我必须在我的 nginx.conf 中为每个人提供他们自己的 MIME 类型列表:
gzip_types text/plain
text/css
...etc;
brotli_types text/plain
text/css
...etc;
如何创建两个设置都可以使用的 MIME 类型的单个列表?
我想使用 NGINX 启用 GZIP 和Brotli压缩。我必须在我的 nginx.conf 中为每个人提供他们自己的 MIME 类型列表:
gzip_types text/plain
text/css
...etc;
brotli_types text/plain
text/css
...etc;
如何创建两个设置都可以使用的 MIME 类型的单个列表?
将两个列表同步设置几乎是一项一次性任务,因为可以从压缩中受益的 MIME 类型的数量浮动在 20 左右。
如果绝对希望从中央位置管理列表,我建议研究开发 Ansible 剧本以将 Nginx 配置推送到服务器。
与推送相应配置相关的部分 Ansible playbook 如下所示:
- name: "Set fact for compressible MIME types"
set_fact:
compressibles:
- "text/css"
- "application/javascript"
- "..."
- name: "copy {{ item }} conf.d config file"
template:
src: "{{ item }}.conf.j2"
dest: "/etc/nginx/conf.d/{{ item }}.conf"
with_items:
- brotli
- gzip
notify: reload nginx
gzip.conf.j2:
gzip on;
gzip_types {{ compressibles|join(' ') }};
# whatever else you think is relevant for gzip configuration
# ...
brotli.conf.j2
brotli on;
brotli_types {{ compressibles|join(' ') }};
# whatever else you think is relevant for brotli configuration
# ...