反向代理

使用Nginx永久缓存上游Web资产(proxy cache)

我将描述使Nginx永久(或至少一年)缓存图像所需要做的一切。

在开始之前,您应该了解一件事:我在此处指出的所有内容均已记录在Nginx的官方缓存指南中,但是我很懒,没有读过它,我希望我能为您节省一些你宝贵的时间

如果您已经在生产中运行Nginx并拥有一定流量,您可能会根据处理请求所需的时间来猜测响应是来自上游服务器而不是来自Nginx缓存的,如果它很慢,那么我们知道作为一个MISS; 另一方面,如果Nginx在缓存中找到响应并进行响应,则为HIT

为了避免任何猜测,最好让Nginx告诉您何时命中或未命中缓存请求,我们通过为HTTP标头提供缓存状态的状态来做到这一点。您可以选择任何想要的名称,X-Cache-Status就像官方指南建议的那样,我喜欢:

location / {
  # . . . 
  add_header X-Cache-Status $upstream_cache_status;
  # . . .
}

现在,我们可以向服务器发出请求,并查看每个特定请求的缓存实际发生了什么:

$ curl -v localhost:8080
. . . 
>
< HTTP/1.1