![nginx 中的 410 响应过期](https://linux22.com/image/704410/nginx%20%E4%B8%AD%E7%9A%84%20410%20%E5%93%8D%E5%BA%94%E8%BF%87%E6%9C%9F.png)
默认情况下,浏览器会无限期地缓存 410 Gone 响应。意外的 410 可能会永久删除该 URL。该 URL 也可能因为其他原因而稍后重新出现。我想设置expires
410 以强制浏览器不时刷新。有没有办法使用 nginx 来实现?
server {
# ...
error_page 410 /errors/410.html;
location /errors/ {
internal;
expires 1h;
}
location = /some/file {
expires 1h;
return 410;
}
}
上述配置导致响应没有任何缓存控制指令。
答案1
根据维基百科,HTTP 410 意味着
410 Gone-表示请求的资源不再可用,并且不会再次可用。
您应该使用更合适的响应代码。444“连接关闭且无响应”或 404“未找到”可能更合适,但这是您需要研究的内容。
我不太会在 Nginx 中使用 expires,而是添加 headers。这样我就可以更好地控制,能够指定 s-maxage 之类的内容,它控制共享缓存的最大使用期限。这需要编译 headers_more 模块,在某些平台上默认情况下是这样的。
add_header Cache-Control "public, max-age=691200, s-maxage=691200";