nginx缓存目录需手动创建并设对权限,核心三步:选合适路径(如/var/cache/nginx)、sudo mkdir -p创建、chown赋权给worker用户(www-data或nginx),且proxy_cache_path必须在http块顶层定义。

自定义创建 Nginx 的 cache 缓存目录,核心是三步:选好路径、手动建目录、设对权限。它不是 Nginx 自动创建的,必须人工干预,否则启动或运行时会静默失败或缓存不生效。
选一个合适的缓存路径
避免用 /tmp(重启清空)、/dev/shm(空间小、无持久性)或根分区下的临时位置。推荐路径:
- Linux 系统:/var/cache/nginx 或 /var/cache/nginx/proxy_cache
- macOS(Homebrew):/usr/local/var/nginx/cache
- 如需独立挂载或 SSD 优化,可用自定义路径如 /mnt/ssd/nginx_cache
手动创建目录并赋权
目录必须由 Nginx worker 进程的运行用户拥有写权限。常见情况:
- Debian/Ubuntu 默认用户是 www-data:
sudo mkdir -p /var/cache/nginx
sudo chown www-data:www-data /var/cache/nginx - RHEL/CentOS/Alpine 常用 nginx 用户:
sudo mkdir -p /var/cache/nginx
sudo chown nginx:nginx /var/cache/nginx - macOS Homebrew 启动时以当前用户运行:
sudo mkdir -p /usr/local/var/nginx/cache
sudo chown $(whoami):staff /usr/local/var/nginx/cache
在 nginx.conf 的 http 块中正确定义
proxy_cache_path 必须放在 http { ... } 最外层,不能嵌套在 server 或 location 内。例如:
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:20m inactive=60m max_size=2g use_temp_path=off;
# 其他配置...
}
注意:
– levels=1:2 表示按哈希值自动分两级子目录,你不会直接看到原始 URL 文件名;
– keys_zone=my_cache:20m 是内存索引区,和磁盘路径无关;
– use_temp_path=off 可减少 I/O,建议开启。
验证是否生效
配置后执行:
sudo nginx -t && sudo nginx -s reload
首次请求后检查目录内容:
ls -R /var/cache/nginx | head -10
应看到类似 d/07/... 的哈希子目录;再用 curl -I URL 查看响应头中 X-Cache-Status 是否出现 HIT 或 MISS。











