![在 nginx 中提供压缩资产服务并设置其到期时间](https://linux22.com/image/744089/%E5%9C%A8%20nginx%20%E4%B8%AD%E6%8F%90%E4%BE%9B%E5%8E%8B%E7%BC%A9%E8%B5%84%E4%BA%A7%E6%9C%8D%E5%8A%A1%E5%B9%B6%E8%AE%BE%E7%BD%AE%E5%85%B6%E5%88%B0%E6%9C%9F%E6%97%B6%E9%97%B4.png)
我正在预压缩资产(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
location
nginx 只会选择一个块,匹配正则表达式位置优先于静态前缀。因此,当提供静态资产时,location ~* <etc>
将使用块,其中不包括设置gzip_static on
。将其复制到静态资产块中,一切将再次正常工作。