在 nginx 中提供压缩资产服务并设置其到期时间

在 nginx 中提供压缩资产服务并设置其到期时间

我正在预压缩资产(js 和 css),并将这些文件.gz与原始文件一起存储在目录中/build。当我将以下内容添加到我的 nginx 配置中时,压缩的静态资产即可正常工作:

location /build {
  gzip_static on;
}

我还尝试为我的所有资产(在所有目录中)设置缓存策略,并将其添加到我的配置中(位于前面的代码下方):

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf)$ {
  expires 30d;
  access_log off;
}

这也有效。但是,我的压缩.gz文件现在不再可用。gz从选择器中删除不会改变任何内容。为什么会发生这种情况,我如何在提供压缩文件的同时为我的资产设置到期时间?

答案1

locationnginx 只会选择一个块,匹配正则表达式位置优先于静态前缀。因此,当提供静态资产时,location ~* <etc>将使用块,其中不包括设置gzip_static on。将其复制到静态资产块中,一切将再次正常工作。

相关内容