26054 open /var/lib/nginx/tmp/client_body/0000000005 failed (13 Permission denied) @ 胡巴 | 星期二,十一月 7 日,2017 年 | 2 分钟阅读 | 更新于 星期二,九月 28 日,2021 年

ajax 异步提交数据服务器返回500,但程序日志中未发现错误,后来在Nginx错误日志中发现了错误信息:*26054 open() “/var/lib/nginx/tmp/client_body/0000000005” failed (13: Permission denied)

问题出现场景

前几天做自己的博客的时候,我在管理后台写好文章,使用ajax post 异步提交文章内容到后台,但是服务器返回总是500。

问题排查

首先我想到的是看自己的程序错误日志,但是发现程序错误日志中没有任何输出。

然后我就查看Nginx的错误日志,果然在错误日志中发现,近几次的反复提交都会出现错误

*26054 open() "/var/lib/nginx/tmp/client_body/0000000005" failed (13: Permission denied)

错误分析

错误内容如下

open() "/var/lib/nginx/tmp/client_body/0000000005" failed

open文件失败原因:

 (13: Permission denied)

可以看到,提示没有权限,那为什么没权限呢?

这里可以确定的是执行Nginx 的这个用户没有权限写 /var/lib/nginx/tmp/client_body/0000000005 这个文件。那我们先来看下Nginx 所属用户和用户组。

执行命令:

ps aux | grep "nginx: worker process" | awk '{print $1}'

执行结果:

qinjian+
nobody
nobody
nobody

然后我们在看一下/var/lib/nginx/ 这个文件目录所属的用户和用户组

执行命令:

sudo ls -al /var/lib/nginx/

执行结果:

total 12
drwx------   3 nginx nginx 4096 Jun 13 12:54 .
drwxr-xr-x. 41 root  root  4096 Sep 15 09:59 ..
drwx------   7 nginx nginx 4096 Jun 13 12:55 tmp

这里我们就可以看到Nginx 进程和/var/lib/nginx/tmp 这个文件夹所属用户和用户组都不同,且tmp文件夹的权限标识为drwx------,以至于Nginx 无法对这个文件夹进行写操作。

问题解决

问题解决起来就相对简单了,我们只需要让两者的所属用户和用户组相同就可以了! 这里我让 /var/lib/nginx/ 这个目录的所属用户和用户组变成和Nginx 子进程一样。

执行命令:

sudo chown -R nobody:nobody /var/lib/nginx/

再执行命令(进行校验):

sudo ls -al /var/lib/nginx/

执行结果:

total 12
drwx------   3 nobody nobody 4096 Jun 13 12:54 .
drwxr-xr-x. 41 root  root  4096 Sep 15 09:59 ..
drwx------   7 nobody nobody 4096 Jun 13 12:55 tmp

这回所属用户和用户组都一样了,我再提交一次试试吧!~~ O(∩_∩)O,问题解决了!

疑惑点

Nginx 为什么要往文件中写数据呢?

这个问在网上找了很久,也还是不太明白,我本人的Nginx 中配置的client_max_body_size 100m; ,按理说一篇文章内容应该不会超过100m,还有可能就是我本身服务器的内存太小了,可能那时被占用的过多不够用了。具体原因还是不明白,如果有知道原因的小伙伴,希望可以联系我告知我一下,我本人也会再进行网络搜寻,如果找到答案,会再这里说明~

Copyright © 2017 - 2024 boboidea.com All Rights Reserved 波波创意软件工作室 版权所有 【转载请注明出处】

avatar
基本信息
  • 姓名:bobo
  • 花名:胡巴
  • 性别:男
  • 血型:O型
  • 星座:白羊座

联系方式

  • 所在地:上海
  • QQ:279250819
  • 微信号:wanghuiwoshinideyou
  • 电子邮件:279250819@qq.com

博客地址

公众号

alt 无限递归

工作经历
  • 2022.5 - 至今

    • 公司:乐府互娱
    • 职位:高级SDK工程师
  • 2019.6 - 2022.4

    • 公司:萌推(上海突进网络科技有限公司)
    • 职位:中级PHP工程师 & 初级golang工程师
    • 荣誉:
      • 绩效A连续得主
      • 月度之星
      • 优秀个人奖
    • 所作所为:
      • 利用ES优化OMS、MMS管理系统商品列表查询
      • 利用消息队列、Redis、乐观锁优化商品审核流程
      • 利用Redis对商家端接口进行有效限流
      • 优化商品相关表索引,提升SQL查询速度
      • 商品中台构建,统一商品相关操作
      • 大表优化(数据分离、分表、大字段拆分)
      • 掌握所有商品核心流程
  • 2018.5 - 2019.5

    • 公司:DaDa英语(上海卓赞教育信息科技有限公司)
    • 职位:中级PHP开发工程师
    • 荣誉:无
    • 所作所为:
      • 利用ES优化教师CMS系统统计数据接口至500ms内
      • 工单系统开发及持续优化
      • 教师CMS系统的功能开发及持续优化
  • 2018.3 - 2018.5

    • 公司:波奇(上海)信息科技有限公司
    • 职位:初级PHP开发工程师
    • 荣誉:同下
    • 所做作为:如下
  • 2016.7 - 2018.3

    • 公司:光橙(上海)信息科技有限公司
    • 职位:初级PHP开发工程师
    • 荣誉:
      • 年度最佳进步奖
    • 所作所为:
      • 利用Redis提升商详接口最佳响应速度至50ms内
      • 利用Redis提升双11活动页可承受QPS至500以上
      • 利用Redis对接口进行简单限流
      • 与小伙伴合作提升搜索质量(ES初识)
      • 其他C端接口的开发及优化
      • B端商城老页面的维护及优化
SKILLS

编程语言

  • PHP
  • Golang
  • Shell
  • JAVA
  • JS
  • HTML\CSS

数据库

  • MySQL
  • Redis
  • Clickhouse

消息中间件

  • RabbitMq
  • Kafka

文档撰写

  • Swagger
  • Markdown

技术框架

  • Laravel
  • gin

搜索引擎

  • ElasticSearch

抓包工具

  • Charles