root指令仅负责URI到物理路径的映射,不参与压缩;gzip配置才真正实现传输压缩,二者需配合:root正确定位静态文件后,gzip依据gzip_types匹配类型并压缩响应内容。
root 指令本身不参与压缩,它只负责把请求 URI 映射到服务器上的物理路径;真正起压缩作用的是 gzip 相关配置。两者配合的关键在于:先用 root 正确定位静态文件(如 CSS、JS、HTML),再由 gzip 对这些文件的响应内容进行传输压缩。只要 root 指向的目录里有可被 gzip_types 匹配的文件,且 gzip 已启用,压缩就会自动生效。
确保 root 设置合理,能让 Nginx 找到待压缩的文件。例如:
/var/www/myapp/,且访问 /css/app.css 应返回 /var/www/myapp/css/app.css,则配置应为:location / { root /var/www/myapp; }
gzip 必须放在能覆盖该 root 所在作用域的配置块中,常见两种方式:
http{} 块内添加,对所有使用 root 的 server 都生效server{} 块顶部(location 外)添加,仅对该站点有效gzip on;、gzip_types 至少包含 text/css application/javascript text/html 等常见静态类型光配对还不行,得确认浏览器收到的是压缩响应:
Content-Encoding: gzip
gzip_min_length 默认通常设为 1k,小于它的文件不会压)nginx -t 检查语法,再 nginx -s reload 重载,避免配置未生效如果经常提供相同静态资源,可预生成 .gz 文件,让 Nginx 直接返回,省去实时压缩开销:
app.js)手动或脚本生成 app.js.gz
gzip_static on;