跳转至

compression-normalize: NGINX Accept-Encoding 规范化模块

安装

您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:

  • RedHat Enterprise Linux 7, 8, 9 和 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-compression-normalize
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-compression-normalize

通过在 /etc/nginx/nginx.conf 顶部添加以下内容来启用模块:

load_module modules/ngx_http_compression_normalize_module.so;

本文档描述了 nginx-module-compression-normalize v1.0.0,于 2026 年 1 月 6 日发布。


描述

ngx_http_compression_normalize_module 是一个 Nginx 模块,旨在解析、规范化和管理来自客户端请求的 Accept-Encoding 头。它通过标准化 Accept-Encoding 值确保对压缩算法的一致处理,从而促进更好的压缩管理和提高 vary 缓存性能。

概要

http {
    compression_normalize_accept_encoding gzip,br,zstd gzip,br zstd br gzip;

    server {
        listen 80;
        server_name example.com;

        location / {
            # 您的配置
        }
    }
}

指令

compression_normalize_accept_encoding

语法: compression_normalize_accept_encoding combinations1 [combinations2 ..] | off;

默认值: compression_normalize_accept_encoding off;

上下文: http, server, location

通过指定首选的压缩算法组合来启用 Accept-Encoding 头的规范化。该指令接受压缩方法的列表,允许定义服务器在响应客户端请求时应优先考虑的编码类型的顺序和优先级。

例如,使用以下配置

compression_normalize_accept_encoding gzip,br,zstd gzip,br zstd br gzip;

如果请求头 Accept-Encoding 同时包含 gzip、br 和 zstd,则标准化的 Accept-Encoding 头的值为 gzip,br,zstd。如果上述条件不满足,但请求头包含 gzip 和 br,则标准化的 Accept-Encoding 头的值为 gzip,br。依此类推,直到检查 compression_normalize_accept_encoding 指令给出的所有组合。如果此时没有匹配的组合,则直接删除 Accept-Encoding 头。

值为 off 将禁用此功能。

变量

\$compression_original_accept_encoding

保留请求 Accept-Encoding 头的原始值。

GitHub

您可以在 nginx-module-compression-normalize 的 GitHub 仓库 中找到有关此模块的其他配置提示和文档。