nginx 开启 gzip_static 指令的后续问题:不能删除源文件,即使存在 .gz 文件也报错
如截图所示,有185个按需加载的文件(0.js~184.js)另外还有对应的185个压缩文件(0.js.gz~184.js.gz)。已开启 Nginx 的 gzip_static 指令,当浏览器访问 xx.js 文件的时候,nginx会自动返回对应的 xx.js.gz 文件,之后浏览器自动解压拿到最终文件。到这里一切都正常。
要求:删除这 185 个 .js 文件,在服务器里只保留 185 个 .gz 文件,并保证网页可以正常访问。
问题:这将导致404错误。假设删除了 /js/app.js 文件,当浏览器访问 /js/app.js 文件的时候服务器直接回复文件不存在(并没有把原本存在的 /js/app.js.gz 文件返回给浏览器)。其它文件存在同样的问题。
求教,该如何配置 nginx 才能满足要求呢?
按照nginx文档的说法( https://nginx.org/en/docs/http/ngx_http_gu... ),不仅仅可以删除 .js 文件,服务器还会根据浏览器是否支持自动解压的功能正确的发送压缩包或者解压后发过去(必须安装 ngx_http_gunzip_module 这个模块)。
换句话说:这185个.js文件可以删除,如果用户是老旧的浏览器(不会自动解压),那么nginx会使用 gunzip 模块对 gz 文件解压,然后发送 .js 文件给老浏览器。
如果浏览器支持自动解压功能,那么nginx直接发送 .gz 文件(不用解压了),浏览器会自动解压的。
我摸索了好几天,搞不成……