当前位置: 首页 > news >正文

nginx反向代理严重错误[crit] (13: Permission denied) while reading upstream问题

nginx作为使用最广泛的一款反向代理软件,其性能也是非常优秀的,一般情况下,直接配置就可以使用,而且也都是稳定高效的,但是在实际应用中,对于不同的应用场景,总是会出现各种各样的问题,只能遇到问题再查找解决问题的解决办法了。

1、现象

前端页面提示打开文件失败:

意思就是加载文件失败。

https://bull.lab/owa/prem/15.1.1979.3/scripts/boot.owaframe.0.narrow.js?bo=1

直接打开文件的时候,文件是可以正常访问的。

查看error.log报错信息:

2024/07/30 15:29:02 [crit] 9021#9021: *251268 open() "/var/lib/nginx/tmp/proxy/6/66/0000000666" failed (13: Permission denied) while reading upstream, client: 10.8.13.42, server: bull.lab, request: "GET /owa/prem/15.1.1979.3/scripts/boot.owaframe.3.narrow.js HTTP/1.1", upstream: "https://10.11.24.44:443/owa/prem/15.1.1979.3/scripts/boot.owaframe.3.narrow.js", host: "bull.lab"

2、原因分析

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

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

查看对应的目录权限:

#: ll /var/lib/nginx/
total 0
drwxr-x--- 7 root root 78 May 31 13:24 tmp

在没有出现问题的机器上是这样的,可以看到目录权限为root。

继续查看另外没有出现问题的机器上的信息如下,可以看到nginx用户具有相关权限。

# ll /var/lib/nginx
drwxrwx--- 7 nginx root 78 Jul 27  2022 tmp

查询进程的执行用户。

# ps -ef | grep nginx
root     29603 25150  0 09:18 pts/1    00:00:00 grep --color=auto nginx
nginx    91485 97955  0 Jul30 ?        00:00:00 nginx: worker process
nginx    91486 97955  0 Jul30 ?        00:00:00 nginx: worker process
nginx    91487 97955  0 Jul30 ?        00:00:00 nginx: worker process
nginx    91488 97955  0 Jul30 ?        00:00:00 nginx: worker process

nginx进程的用户为nginx。

3、解决方法

1、修改proxy_temp_file_write_size限制大小,避免写入临时文件

proxy_temp_file_write_size 64k; #设定缓存文件夹大小

实际上,有时下载文件达到几百K,比如本次遇到问题是的文件原始大小为605K,所以添加这个配置,也只是缓解一般情况下的问题,不解决根本性的问题。
2、修改temp目录用户权限和启动nginx worker权限一致,重新加载配置(nginx -s reload

chown -R nginx:nginx /usr/local/nginx/temp

这种方式是合适的解决办法。

3. 修改nginx的启动用户,在nginx的配置文件nginx.conf文件中

user root;

设置完成后,重新加载配置(nginx -s reload)即可。

http://www.lryc.cn/news/412765.html

相关文章:

  • 精通Python爬虫中的XPath:从安装到实战演示
  • redis的使用场景
  • 记录new Date()的各种方法以及时间差的计算方法
  • vue项目创建+eslint+Prettier+git提交规范(commitizen+hooks+husk)
  • 从Docker拉取镜像一直失败超时?这些解决方案帮你解决烦恼
  • R语言大尺度空间数据分析模拟预测及可视化:地统计与空间自相关、空间数据插值、机器学习空间预测、空间升降尺度、空间模拟残差订正、空间制图等
  • 深入理解Java内存管理机制
  • Helm 学习之路,一文弄懂
  • 【面试题解答】一个有序数组 nums ,原地删除重复出现的元素
  • 【数据结构算法经典题目刨析(c语言)】随机链表的复制(图文详解)
  • cqyjldfx
  • 大数据——HBase原理
  • 《电视技术》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 网络编程 --------- 2、socket网络编程接口
  • C# Deconstruct详解
  • Java 面试常见问题之——为什么重写equals时必须重写hashCode方法
  • 后端给的树形结构 递归 改造成阶联选择器所需要的lable、value结构
  • 文献阅读:基于拓扑结构模型构建ICI收益诊断模型
  • Python文献调研(四)QtDesigner的布局
  • CentOS Linux release 7.9.2009 中sudo命令未找到
  • 生产计划问题的不同最优化工具软件求解
  • Java关键字及保留字总结
  • 【PGCCC】PostgreSQL 14 小版本分析,有那个版本不建议使用#PG中级
  • B树在数据库中的应用:理论与实践
  • 网络编程 -------- 3、TCP_UDP_UNIX
  • 口袋奇兵:游戏辅助教程!陆军搭配阵容推荐,平民必备!
  • Spring Boot 集成参数效验 Validator
  • 63、ELK安装和部署
  • 【Dash】简单的直方图
  • 【CTF-Crypto】格密码基础(例题较多,非常适合入门!)