nginx 代理缓存
最近在开发一个ghost项目,使用nginx作为反向代理,开发的时候遇到了一个诡异问题,在此记录一下,那就是当错误配置了ghost routes.yml导致301之后,nginx就会缓存下来,一开始以为是浏览器缓存问题,然而使用curl -I 请求之后,301还是存在,因此可以排除是浏览器缓存问题。
在修改了ghost routes.yml之后,301问题还是存在,期间重启了nginx也是不起作用,更奇怪的是当我把ghost服务停止了,应该理论上所有的页面访问都是502,但是301页面依然纹丝不动,还是返回301,到这里,基本上可以确定问题就是出现在nginx上面了,并且因该是nginx缓存了301,接下来就是去nginx的目录看看哪里配置了缓存,或者有缓存文件夹,发现了proxy_cache_dir,看起来应该就是缓存,于是大胆删除了里面的内容,但是没起作用,于是重启了nginx,然后301不见了。
缓存的存在,对于性能的提升有巨大的帮助,但是在开发的时候也给我们带来了很多困扰,小道浏览器缓存,大道服务器缓存,dns缓存,cdn缓存,可能一个缓存问题,就会导致我们对自己的程序产生无尽的怀疑,其实本质上,还是我们对于底层的不深刻理解,如果理解的话,就可以快速定位到产生问题的地方,接下来就是解决问题了。
在计算机界有个定理,我们觉得问题很难解决的时候,往往多添加一个层就解决了,而我们排查问题就是反过来,去掉一个层或者多个层,也就解决了。
努力,奋斗,301nginx缓存!!!