etag

'etag' 指令控制 NGINX 中 ETag 响应头的生成。 — NGINX HTTP Core

etag
httpserverlocation
语法etag on | off;
默认值on
上下文http, server, location
模块NGINX HTTP Core
参数flag

说明

'etag' 指令在 NGINX 中用于启用或禁用 HTTP 响应头中的 ETag 生成。ETag(或实体标签)用于由浏览器和代理服务器验证缓存的响应,从而实现高效的缓存管理。当 'etag' 指令设置为 'on' 时,NGINX 会基于资源内容生成 ETag,并将其添加到响应头中。相反,如果设置为 'off',NGINX 将不会在响应中包含 ETag,这在 ETag 管理由其他地方处理或生成 ETag 的额外开销不必要的情况下可能是可取的。 在实践中,启用 ETag 可以改善缓存验证,但不一定总是有利。例如,如果你的后端服务已经处理了 ETag,那么在 NGINX 中再次添加可能会导致不一致。此外,ETag 有时可能泄露关于资源版本的细节,这些细节可能被视为敏感信息。管理员需要评估其应用的缓存策略,以确定是否有效地使用该指令。总体而言,'etag' 指令的使用应考虑现有的具体缓存机制和应用架构。

配置示例

http {
    server {
        location / {
            etag off;
        }
    }
}

启用 ETags 可能导致不一致情况,尤其当后端也生成 ETags 时。

在通过 ETags 暴露资源版本信息时,请务必考虑其影响。