proxy_cache_lock_timeout

为获取缓存中代理响应的锁设置超时时间。 — NGINX HTTP Core

proxy_cache_lock_timeout
httpserverlocation
语法proxy_cache_lock_timeout timeout;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1

说明

`proxy_cache_lock_timeout` 指令用于指定 NGINX 等待获取存储在缓存中响应的锁的最长时间。该指令在多个请求同时尝试检索相同内容的场景中非常有用。通过使用锁,NGINX 可以将这些请求串行化,使得只向后端发起一次请求,而其他请求则等待响应被缓存。此行为有助于减轻上游服务器的负载并提升整体性能。 `proxy_cache_lock_timeout` 的值以时间格式指定,例如 `10s` 表示 10 秒,也可以设置为 0 以禁用锁。当请求遇到缓存未命中时,如果锁可用,请求将继续从上游服务器获取内容。如果锁被其他请求占用且等待时间超过指定值,新请求将返回 502 错误,而不是无限期等待。 该指令可以在 `http`、`server` 和 `location` 上下文中声明,在需要对缓存进行细粒度控制的配置中提供了灵活性。应根据应用的响应时间和预期流量模式仔细选择超时时间,以避免不必要的请求失败。

配置示例

location /api {
    proxy_pass http://backend;
    proxy_cache my_cache;
    proxy_cache_lock on;
    proxy_cache_lock_timeout 10s;
}

将超时时间设置得过低可能会导致在上游服务器响应缓慢时出现更多 502 Bad Gateway 错误。

请确保启用 `proxy_cache_lock`,以便锁定机制能正常工作。