Nginx proxy_temp failed 13: Permission denied

出现的问题

通过nginx代理服务器对后端tomcat服务器进行访问,可以看到nginx服务的accees.log有访问记录, tomcat的catalina.out有访问记录。然而前端拿不到某些静态文件,导致整个页面没有办法被显示。

定位问题

  1. 通过tomcat服务器IP和相应端口 [tomcat VM ip]:[tomcat port]是可以访问的后端并且渲染前端的
  2. 通过另外一条路: waf -> lb -> tomcat server 也是可以正常访问的
  3. nginx error.log中有 open() "/nginx_dir/proxy_temp/xxx/xxxx/xxxxxxxxxxx" failed (13: Permission denied) while reading
    由此我们可以定位错误可能是源于nginx的缓存文件夹无法被nginx访问

解决问题

首先查看 ps aux | grep "nginx: worker process"当前nginx的用户是谁
然后查看 ll /nginx_dir/proxy_temp文件夹下文件&&文件夹的用户,大概率会发现里面文件&文件夹权限为root等启动nginx的用户无权限的文件&文件夹
最后更改文件或文件夹所属用户&组 chown -R

测试

在浏览器端重新访问发现访问正常。

思考

有两个点:

  1. nginx的缓存文件无权限访问后,nginx没有绕过缓存文件并向代理后端发送请求。导致卡死。
  2. 如果禁止掉nginx的缓存应该也是可以的

参考

https://serverfault.com/questions/235154/permission-denied-while-reading-upstream

你可能感兴趣的:(ops,dev,linux,nginx,linux,web)