proxy_cache

NGINX 中的 'proxy_cache' 指令启用对代理内容的缓存,以改善响应时间并减轻服务器负载。 — NGINX HTTP Core

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

说明

'proxy_cache' 指令指定用于存储来自代理服务器的缓存响应的缓存区域。通过定义缓存,NGINX 可以存储响应,从而避免频繁向后端服务器发出请求,有效地加快终端用户的响应时间并减轻后端系统的负载。该指令可用于 HTTP、server 和 location 块的上下文中,使在配置的不同部分实现缓存策略具有灵活性。\n\n'proxy_cache' 指令的语法如下:'proxy_cache zone;',其中 'zone' 是已定义缓存区域的名称,必须使用 'proxy_cache_path' 指令事先创建。该指令控制响应的存储时长,并会影响后续请求的处理方式——是从缓存中返回还是转发到后端。此外,还可以设置其他指令以微调缓存行为,例如 'proxy_cache_valid'(根据响应状态码定义缓存时长)和 'proxy_cache_key'(根据请求参数自定义缓存键的生成方式)。\n\n还需注意,仅靠该指令本身并不能完整配置缓存行为。它必须与关于缓存区域、具体缓存策略以及共享内存分配的附加配置配合使用,这些配置决定了 NGINX 服务器中缓存的管理和优化方式。

配置示例

http {
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m;
    server {
        location / {
            proxy_pass http://backend;
            proxy_cache my_cache;
        }
    }
}

确保先使用 'proxy_cache_path' 定义缓存区域,然后再在 'proxy_cache' 中引用它。

使用 'proxy_cache' 而没有适当的缓存控制可能导致向用户提供过时的数据。

对缓存键要小心,因为如果未通过 'proxy_cache_key' 正确设置,可能会导致意外行为。

确保文件系统权限允许 NGINX 向 'proxy_cache_path' 指定的目录写入。