nginx报错client_body_temp permission denied

参考:https://blog.ct99.cn/2019/07/24/nginx_bao_cuo_client_body_temp_permission_denied.html

https://blog.csdn.net/feifeixiang2835/article/details/84964036

nginx出现很多500的请求,查看error.log发现有client_body_temp permission denied报错。

 

故障原因:

   新版本sdk发布后,发起的post请求body增大,超出了nginx缓存区大小,
所以需要暂存在client_body_temp中,因nginx启动用户为vmuser,
故没有权限写入这个目录,导致报错。

解决办法:

1、chown vmuser:vmuser client_body_temp

2、nginx中修改配置:增大client_body_buffer_size设置

总结:
传输的数据大于client_max_body_size,一定是传不成功的。

小于client_body_buffer_size直接在内存中高效存储。

如果大于client_body_buffer_size小于client_max_body_size会存储临时文件,临时文件一定要有权限。

如果追求效率,就设置 client_max_body_size client_body_buffer_size相同的值,这样就不会存储临时文件,直接存储在内存了。

实例:

## Start: Size Limits & Buffer Overflows ##
    client_body_buffer_size 800K;
    client_header_buffer_size 1k;
    client_max_body_size 20m;
    large_client_header_buffers 2 2k;
    client_body_temp_path /data/nginx_temp 3 2;
    ### END: Size Limits & Buffer Overflows ##

 

1. 重启nginx,上传大文件,还是上传不了

2、再次编辑nginx.conf文件,开头加上 user root;

#user nobody;
user root;
worker_processes 1;

3、再次重启nginx,大文件可以上传了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值