nginx 中的 410 响应过期

nginx 中的 410 响应过期

默认情况下,浏览器会无限期地缓存 410 Gone 响应。意外的 410 可能会永久删除该 URL。该 URL 也可能因为其他原因而稍后重新出现。我想设置expires410 以强制浏览器不时刷新。有没有办法使用 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";

相关内容