使用proxy_pass为NGINX上的图像设置浏览器缓存



我使用NGINX作为反向代理,并使用以下设置将所有请求重定向到我的SPA容器

location / {
proxy_pass  http://172.x.x.x;
proxy_intercept_errors on;
error_page 404 = /index.html;
}

这是有效的,但所有图像的过期时间都设置为默认值(max-age=3600(。当我添加下面的块,该块应该设置所有图像类型的过期时间时,则没有任何图像再工作(404 NOT FOUND(。

location ~* .(jpg|png)$ {
add_header Cache-Control public;
expires 1M;
}

我试着将这个块嵌套在第一个块中,但后来我也得到了404响应。

为什么这不起作用?我应该更改什么,以便所有图像都有一个扩展的max-age

Nginx选择一个location来处理请求。它使用位置块中的指令或从周围块继承的指令。

如果要向上游传递对.jpg.pngURI的请求,则location还需要包含proxy_pass语句。


或者,使用map设置expires值。有关详细信息,请参阅本文档。

例如:

map $request_uri $expires {
default             off;
~*.(jpg|png)(?|$) 1M;
}    
server {
...
expires $expires;
location / {
...
}
}

我认为expires已经设置了缓存控制头,但您也可以使用另一个map来设置add_header指令的值。

最新更新