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

使用proxy_pass在NGINX上为图像设置浏览器缓存,nginx,Nginx,我使用NGINX作为反向代理,并具有以下设置,将所有请求重定向到我的SPA容器 location / { proxy_pass http://172.x.x.x; proxy_intercept_errors on; error_page 404 = /index.html; } 这是可行的,但所有图像的到期日都设置为默认值(max age=3600)。 当我添加下面的块,该块应该为所有图像类型设置到期日,那么所有图像都不再有效(404未找到) 我尝试将这个块嵌套在第

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

location / {
    proxy_pass  http://172.x.x.x;
    proxy_intercept_errors on;
    error_page 404 = /index.html;
}
这是可行的,但所有图像的到期日都设置为默认值(
max age=3600
)。 当我添加下面的块,该块应该为所有图像类型设置到期日,那么所有图像都不再有效(
404未找到

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


为什么这不起作用?我应该改变什么,以便所有图像都有一个扩展的
最大年龄

Nginx选择一个
位置
。它使用位置块内的指令或从周围块继承的指令

如果要向上游传递对
.jpg
.png
URI的请求,则
位置
还需要包含一个
代理传递
语句


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

例如:

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

    location / {
        ...
    }
}

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

您的新
位置
缺少
代理\u过程http://172.x.x.x;语句。是的,就是这样。如果你把你的评论作为回答,我会接受的。
map $request_uri $expires {
    default             off;
    ~*\.(jpg|png)(\?|$) 1M;
}    
server {
    ...
    expires $expires;

    location / {
        ...
    }
}