解决nginx无法下载大文件,解决open()failed 问题

解决open()failed (13: Permission denied) while reading upstream的问题

前言:

[root@test nginx]# ps -ef|grep nginx
root      1686     1  0  2018 ?        00:00:00 nginx: master process /xxdata/nginx/sbin/nginx
nginx     5443  5442  0  2018 ?        00:00:33 php-fpm: pool www
nginx     5444  5442  0  2018 ?        00:00:34 php-fpm: pool www
nginx    17130  1686  0 15:19 ?        00:00:00 nginx: worker process
root     17517 17228  0 15:31 pts/4    00:00:00 grep --color=auto nginx

出现问题:
网站页面出现异常,无法下载大文件。

查看nginx的error.log日志

2019/01/27 15:18:30 [crit] 23475#0: *39947969 open() "/xxdata/nginx/proxy_temp/4/44/0000200444" failed (13: Permission denied) while reading upstream, client: 110.70.240.98, server: api.xuexintest.com, request: "GET /training-srv/jy/report/downLoad/273e658b-d6a9-45ad-bdf5-893fcd261700©fileType=0&kd=1&zt=1&fx=1&jd=1&dp=1&ly=1&kdkp=1&subjectCode=chemistry&xnID=sjl HTTP/1.1", upstream: "http://10.17.16.104:1300/training-srv/jy/report/downLoad/273e658b-d6a9-45ad-bdf5-893fcd261700©fileType=0&kd=1&zt=1&fx=1&jd=1&dp=1&ly=1&kdkp=1&subjectCode=chemistry&xnID=sjl", host: "ai.test.com"

分析问题及解决方法:
分析问题:
出错原因是work进程没有打开/xxdata/nginx/proxy_temp/4/03/0000000034 文件的权限。work进程属于nginx用户组,nginx用户名。因此只要把proxy_temp 目录权限赋给nginx用户组,nginx用户名就可以了。
解决问题:

[root@test nginx]# chown -R nginx:nginx ./proxy_temp/
  [root@test nginx]# ll proxy_temp/
 total 40
drwx------ 102 nginx nginx 4096 Mar  9  2016 0
drwx------ 102 nginx nginx 4096 Mar  9  2016 1
drwx------ 102 nginx nginx 4096 Mar  9  2016 2
drwx------ 102 nginx nginx 4096 Mar  9  2016 3
drwx------ 102 nginx nginx 4096 Mar  9  2016 4
drwx------ 102 nginx nginx 4096 Mar  9  2016 5
drwx------ 102 nginx nginx 4096 Mar  9  2016 6
drwx------ 102 nginx nginx 4096 Mar  9  2016 7
drwx------ 102 nginx nginx 4096 Mar  9  2016 8
drwx------ 102 nginx nginx 4096 Mar  9  2016 9

猜你喜欢

转载自blog.51cto.com/13922718/2347047