/var 是 linux 系统约定的变量数据存储根目录,nginx 将缓存、临时文件、日志及运行时状态文件分别存放于 /var/cache/nginx、/var/log/nginx、/var/run/nginx.pid 等子路径,并需严格管理其用途、权限、空间与生命周期。

/var 在 Nginx 实际运行中不是“一个文件夹”,而是 Linux 系统约定的变量数据存储根目录,Nginx 会按功能将不同类别的运行时临时文件分散存放在 /var 下的特定子路径,关键不在“规划 var 文件夹”,而在于**明确各临时路径用途、权限、空间与生命周期管理**。
/var/cache/nginx:缓存与临时文件的核心承载区
这是 Nginx 最常使用的 /var 下路径,但需严格区分两类内容:
-
缓存类(可手动清理):如 proxy_cache_path 或 fastcgi_cache_path 定义的缓存目录(例如
/var/cache/nginx/proxy_cache),用于长期保存后端响应。这类目录建议单独挂载、配 quota、定期用proxy_cache_purge或find ... -mtime +7 -delete清理。 -
临时类(应自动管理+辅助清理):如
/var/cache/nginx/client_temp、/var/cache/nginx/proxy_temp、/var/cache/nginx/fastcgi_temp。它们只暂存单次请求过程中的中间数据,nginx 工作进程会在连接关闭或超时后自动删除对应文件。不建议直接清空整个目录,而应:
– 先用lsof +D /var/cache/nginx/proxy_temp确认无活跃占用;
– 再用find /var/cache/nginx/proxy_temp -type f -mmin +120 -delete清理闲置超 2 小时的文件。
/var/log/nginx:日志写入必须可控
该目录专用于 access.log 和 error.log。重点是避免日志撑爆磁盘:
- 配置 logrotate(如
/etc/logrotate.d/nginx),启用 daily + rotate 30 + compress; - 若用 systemd,可设
SystemMaxUse=1G限制 journal 日志,但 Nginx 自己写的文件不受此限; - 高流量场景可考虑将日志输出到
syslog或远程收集系统,本地仅保留 debug 级别错误日志。
/var/run/nginx.pid 与运行时状态文件
/var/run/(或符号链接到 /run/)存放 nginx.pid 及可能的 socket 文件:
-
pid /run/nginx.pid;必须在 nginx.conf 中显式声明,且确保/run是 tmpfs(内存文件系统),避免重启后残留; - 若使用 Unix domain socket(如
fastcgi_pass unix:/run/php-fpm.sock;),确保/run下对应路径存在、权限正确(如nginx:www-data可读写); - 不要把临时文件(如 *_temp)也塞进
/run/—— 它空间小、非持久,只适合短生命周期状态文件。
权限与空间:两个不能妥协的基础项
所有 /var 下 Nginx 使用的路径,必须满足:
-
属主属组正确:通常是
nginx:nginx或www-data:www-data,执行chown -R nginx:nginx /var/cache/nginx; -
写权限到位:尤其
client_temp目录缺失写权会导致上传失败报 413 或 500; -
磁盘空间预留:/var/cache/nginx 所在分区建议保留 ≥15% 空闲空间,proxy_temp 若频繁落盘,说明缓冲配置偏小,应优先调大
proxy_buffers而非扩容磁盘。











