You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx缓存加载进程退码0且缓存目录为空问题求助

Nginx缓存目录为空及缓存加载进程日志问题解答

关于缓存加载进程的疑问

  • 缓存加载进程本来就应该在Nginx启动完成后退出,你的日志显示它exited with code 0,这是正常状态——因为初始缓存目录为空,它顺利完成了“加载空元数据”的任务,完全不需要担心这个进程的退出问题。

缓存目录为空的原因分析及解决办法

结合你的Nginx配置,核心问题是缓存配置和请求处理逻辑不匹配,导致缓存从未被触发写入:

  1. 静态资源未启用缓存
    你的location ~* \.(js|css|png|jpg|jpeg|gif|ico)$块完全没有缓存相关配置,这类高频静态资源是缓存的核心对象,但当前配置下不会被写入缓存目录。需要补充缓存规则:

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        proxy_cache MyCache;
        proxy_cache_valid any 30m;
        expires max;
        log_not_found off;
        add_header X-Proxy-Cache $upstream_cache_status;
    }
    
  2. PHP请求的缓存配置错误
    你在location ~ \.php$块里同时混用了proxy_cache和fastcgi_pass:proxy_cache是用于HTTP反向代理场景的缓存,而fastcgi_pass是直接对接PHP-FPM的FastCGI代理,两者逻辑冲突。如果要缓存PHP生成的动态内容,必须改用fastcgi_cache:

    # 先在http块添加FastCGI缓存路径(和proxy_cache_path逻辑一致)
    fastcgi_cache_path /data/cache/nginx/fastcgi
                 keys_zone=PhpCache:10m
                 levels=1:2
                 inactive=60m
                 max_size=5g;
    
    # 再修改PHP请求的location块
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_cache PhpCache;
        fastcgi_cache_valid any 30m;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        add_header X-Proxy-Cache $upstream_cache_status;
    }
    
  3. 根location的缓存配置多余
    你的location /里配置了proxy_cache,但同时用try_files直接读取本地文件和触发PHP请求——这里的proxy_cache不会生效,因为try_files优先命中本地资源,完全不会走反向代理逻辑,直接移除该location下的proxy_cache相关配置即可。

  4. 验证缓存生效的方法
    访问网站后,查看响应头的X-Proxy-Cache字段:

    • HIT:命中缓存
    • MISS:未命中,本次请求后会写入缓存
    • BYPASS:跳过缓存

    也可以直接查看缓存目录内容:

    ls -R /data/cache/nginx
    

总结

  • 缓存加载进程退出是正常行为,无需额外处理。
  • 修正静态资源和PHP请求的缓存配置逻辑后,缓存目录会逐步生成对应的缓存文件。

内容的提问来源于stack exchange,提问作者Loizm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:56:25