3

nginx 缓存踩坑 - SegmentFault 思否

 2 years ago
source link: https://segmentfault.com/a/1190000041217216
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在软工实验中我启用了nginx但是奇怪的是临近检查的时候它突然不行了,最终错过了软工检查时间,给实验老师提交的录屏。

前后台启动成功后,访问localhost:xxxx(自设置的端口号),但是奇怪的是他并没有得到想要的效果:

net::ERR_CONTENT_LENGTH_MISMATCH:长度不匹配?

错误解决过程:

1.将报错整个复制利用google进行搜索:

没想到google推荐的是一个根据国外stack overflow的翻译,可见更喜欢直接看中文的程序员有多少。可惜它很乱,而且有的地方翻译的不太懂,感觉是浪费时间。

2.根据第二个查询结果可知是nginx的问题

去看nginx日志信息

依据选中的报错去查:

image.png

两条命令
1.sudo chmod o+x /usr/local/var:获得操作文件的权限
2.sudo chown -vhR nobody:admin /usr/local/var/run/nginx:设置nginx拥有者为空,使用者为所有管理员组。

问题至此解决!

3.了解问题原因

nginx时有缓存的!

image.png
示例:
第一步:客户端第一次向Nginx请求数据A;
第二步:当Nginx发现缓存中没有数据A时,会向服务端请求数据A;
第三步:服务端接收到Nginx发来的请求,则返回数据A到Nginx,并且缓存在Nginx;
第四步:Nginx返回数据A给客户端应用;
第五步:客户端第二次向Nginx请求数据A;
第六步:当Nginx发现缓存中存在数据A时,则不会请求服务端;
第七步:Nginx把缓存中的数据A返回给客户端应用。

至此我的问题全部解决,在这其中我也搜到说把proxy_temp缓存文件夹删掉,确实删掉了,然后重新请求发现可以了,就拿着电脑又去机房找老师检查了,再一刷新又不行了。这其中的原理就是我删除之后是没有缓存了,但是我访问了一次,第二次访问他会直接去找第一次访问的缓存,由于权限不够,所以最终报这个错。

首先是此次麻烦了很长时间强哥,耽误了他一下午还是挺愧疚的。此次最大的收获就是不能心急,同时任何东西也要记得看日志信息。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK