Nginx关闭缓存文件元信息open_file_cache off
今天发现nginx在修改过json文件后用ajax加载发现出现ERR_EMPTY_RESPONSE的错误,
查看日志显示
2019/09/10 8:44:47 [alert] 9743#0: *192873 pread() read only 1237 of 1240 from "/var/www/website.com/test.json"
Google了一下发现是因为Nginx会缓存静态文件的元信息,nginx.conf设置中为
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
设置的意思是最大缓存1000个文件,20s内如果文件被使用少于2次就删除缓存,30s内更新缓存。
所以导致我刚修改完文件后,读取时由于缓存的元信息和文件不一致,倒是出错。
解决办法在conf文件中加入
location ~ .*\.(json)$
{
open_file_cache off;
}
关闭json文件的缓存功能。
重启nginx,问题解决。