美文网首页
nginx反向代理failed (13: Permission

nginx反向代理failed (13: Permission

作者: Geroge1226 | 来源:发表于2021-10-21 15:35 被阅读0次

1、现象

业务需要使用支持https域名反向代理非http域名,在使用代理域名访问被代理资源时打不开情况。
参看nginx错误日志信息:

2021/10/21 14:08:06 [crit] 8053#0: *6015 open() "/usr/local/nginx/proxy_temp/0/06/0000000060" failed (13: Permission denied) while reading upstream, client: 58.247.110.222, server: performance.idgvalue.com, request: "GET /viewer/dashboard/webviewer.js?v=3.0.2957 HTTP/1.1", upstream: "http://112.124.55.24:80/viewer/dashboard/webviewer.js?v=3.0.2957", host: "performance.idgvalue.com", referrer: "http://performance.idgvalue.com/viewer/dashboard?dashboardguid=db86a2aa-9e43-4347-8bb7-075c58ba7957&token=ad3e1ffe-e965-8ab9-772d-a35e4581740d"

2、原因分析

从错误信息来看,nginx是在写代理 “临时文件” proxy_temp下文件时候出现了权限不足 Permission denied

  • nginx部分代理配置如下:
  location /viewer {
    proxy_pass http://235ly27139.51mypc.cn;
    proxy_set_header Host $proxy_host;
    # proxy_pass http://235ly27139.51mypc.cn;
    # proxy_set_header Host $proxy_host;
  }

这里没有配置:proxy_temp_file_write_size属性。属性作用:当你访问资源信息超过该参数设置的大小时,nginx会先将文件写入临时目录(nginx安装目下/proxy_temp目录)。所以这里我们可以配置该属性重启nginx解决问题。但这不是问题证明解决方法。即无权限问题,我们查看进程及文件目录用户属性。

  • 查看nginx目录下用户权限:cd /usr/local/nginx,发现 proxy_temp 文件用户为 root权限
(base) [root@iZxpl4sxxnloovZ nginx]# ll
total 36
drwx------  2 nobody root   4096 Jan 13  2021 client_body_temp
drwxr-xr-x  7 root   root   4096 Oct 21 14:18 conf
drwx------  2 nobody root   4096 Feb 13  2020 fastcgi_temp
drwxr-xr-x  2 root   root   4096 Feb 13  2020 html
drwxr-xr-x  2 root   root   4096 Nov 23  2020 logs
drwx------ 12 nobody root 4096 Jul  7  2020 proxy_temp
drwxr-xr-x  2 root   root   4096 Dec 28  2020 sbin
drwx------  2 nobody root   4096 Feb 13  2020 scgi_temp
drwx------  2 nobody root   4096 Feb 13  2020 uwsgi_temp

产看启动nginx用户:ps -elf | grep nginx , 进程workernobody用户

5 S root      8886     1  0  80   0 - 12248 sigsus Oct12 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
5 S nobody   11291  8886  0  80   0 - 12805 ep_pol 14:52 ?        00:00:00 nginx: worker process
0 R root     13460  6571  0  80   0 - 28179 -      15:24 pts/0    00:00:00 grep --color=auto nginx

3、解决方法

1、修改proxy_temp_file_write_size限制大小,避免写入临时文件
2、修改proxy_temp目录用户权限和启动nginx worker权限一致,重启nginx: nginx -s reload

chown -R nobody:nobody /usr/local/nginx/proxy_temp

4、总结

① 遇到问题才是学习的深入的机会,请把问题当珍宝。
② 遇到问题不能只看现象,需要找到日志这类的切入点。

  • 附 nginx 反向代理参数说明

proxy_connect_timeout 600; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 600; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 600; #后端服务器数据回传时间(代理发送超时)
proxy_buffer_size 32k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k; #设定缓存文件夹大小

相关文章

网友评论

      本文标题:nginx反向代理failed (13: Permission

      本文链接:https://www.haomeiwen.com/subject/isvfaltx.html