max_size参数是proxy_cache_path中限制磁盘缓存总容量的硬性上限,触发LRU清理机制;必须配合keys_zone使用,单位支持g/m/k,实际占用可能略超5%,需按硬盘类型和业务特征合理设置。

直接在 proxy_cache_path 指令中用 max_size 参数就能限制磁盘缓存总容量,这是最核心且必须设置的硬性上限。
max_size 是磁盘缓存的总容量红线
它不是建议值,而是 Nginx 主动清理缓存的触发阈值。一旦缓存目录实际占用磁盘空间达到该值,Nginx 会按 LRU(最近最少使用)策略自动删除旧缓存文件,确保不突破设定上限。
-
必须配合
keys_zone使用,例如keys_zone=api_cache:100m,否则配置不生效 - 单位支持
g、m、k,如max_size=10g或max_size=500m - 实际磁盘占用可能略超该值(通常不超过 5%),因元数据和文件系统块对齐导致,属正常现象
合理设置 max_size 的经验参考
不能只看磁盘空闲空间,还要考虑硬件类型和业务压力:
- SSD 硬盘:建议设为可用空间的 ≤70%,留足磨损均衡与后台 GC 余量
- HDD 硬盘:建议设为可用空间的 ≤50%,避免碎片化严重拖慢 IO
- 若缓存内容以小文件为主(如 API 响应),可适当调低
max_size,防止 inode 耗尽
注意它不控制“单次请求”或“临时文件”的磁盘用量
max_size 管的是整个缓存区的长期总量,和以下参数无关:
-
proxy_max_temp_file_size:只限单个临时文件大小,用于大响应体落盘场景 -
client_max_body_size:限制客户端上传体大小,防恶意大请求 -
proxy_buffers和proxy_busy_buffers_size:属于内存缓冲,不占磁盘
一个典型且安全的配置示例
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=api_cache:100m inactive=24h max_size=10g use_temp_path=off;
这行配置表示:缓存存到 /data/nginx/cache,用三级哈希目录管理,100MB 内存存键和元数据,24 小时未访问自动淘汰,磁盘总用量绝不允许超过 10GB。


















