Nginx报错open failed 13: Permission denied while reading upstream的解决方法

今天我们的系统出现了一个很诡异的情况,一个页面里有几个js文件和图片无法读到,Chrome浏览器里的status是:net::ERR_CONTENT_LENGTH_MISMATCH。而同一个页面其他的js、css和图片都没有问题,status是200。

遇到这个问题我第一反应是这个系统的tomcat我们也没有人动过,这几个资源文件在服务上是用的,那就是看看Nginx有没有问题,刚好今天有人动过Nginx,那就就去看看Nginx的access.log和error.log的日志。发现error.log里面有一个报错:

2016/06/05 17:58:06 [crit] 1017#0: *182 open() “/usr/local/nginx/proxy_temp/4/02/0000000024” failed (13: Permission denied) while reading upstream, client: ***.***.***.***, server: *****, request: “GET /idp/resources/images/mitreid-connect.ico HTTP/1.1”, upstream: “https://*****:8444/idp/resources/images/mitreid-connect.ico”, host: “*****”, referrer: “******”

proxy_temp目录是干什么的?我们的Nginx有个配置proxy_temp_file_write_size,当文件超过该参数设置的大小时,Nginx会先将文件写入临时目录,默认为Nginx安装目下/proxy_temp目录。

默认情况下,nginx是以www启动的,用ll命令查看proxy_temp目录,我们发现用户和用户组是nobody,难怪Permission denied!

我们用

chown -R www:www proxy_temp

把proxy_temp目录改成nobody的用户组权限,重启Nginx后问题就解决了!

 

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/2431.html

《Nginx报错open failed 13: Permission denied while reading upstream的解决方法》有1个想法

发表评论