我有一个通过设置配置为代理的服务器:
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=backcache:8m max_size=20g inactive=7d;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
尽管如此,当我启动 nginx 时,我最终还是得到了 /var/lib/nginx/proxy。两者都开始填满,最终硬盘也填满了。
如果我尝试将 proxy_cache_path 指向 /var/lib/nginx/proxy,则会收到错误:
nginx: [emerg] the same path name "/var/lib/nginx/proxy" used in /etc/nginx/conf.d/proxy.conf:1 and in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed
nginx.conf 的第 62 行只是 http{} 部分的结尾,因此我认为这是在抱怨我试图覆盖的“默认”。
我不知道如何禁用这个代理配置,因为它似乎与我设置的显式配置重复。有没有办法覆盖/删除该默认代理配置?
答案1
原来问题出在/var/lib/nginx/proxy
。proxy_temp_path
通常 nginx 会下载到这个临时路径,然后移动文件移至真实的下载完成后,缓存目录。
我们肯定有很多东西没有下载完,或者从未进入主缓存,所以磁盘就满了。
在这种情况下,解决方案是关闭 temp_path 的使用(使用nginx 1.7.10 或更高版本上的指令use_temp_path=off
上的参数)。proxy_cache_path