nginx报proxy_temp Permission denied 错误解决

在使用nginx的时候,有时会发现报 proxy_temp Permission denied 错误,这时候nginx会报error信息,原因其实就是 proxy_temp 没有读取权限,有两种解决办法:

在开发过程中,遇到前端页面加载css,js或woff,ttf  文件的时候,经常出现 ERR_CONTENT_LENGTH_MISMATCH 的报错情况。但不是所有的js或css 报错,报错的文件较没报错的文件偏大。并且报错的文件也可以单独在浏览器中打开,所以排除了最简单的地址错误。前端项目是由nginx代理的,所以可以查看nginx的日志,看看有无线索。

将nginx启动用户改为有权限的用户(如 root)或者将proxy_temp授权给启动用户
user root;

更改nginx的配置,将缓冲区调整大一点,以下几项需要同时调整配置

http{
    #proxy缓存设置
    proxy_buffer_size 10m;
    proxy_buffers 4 10m;
    proxy_busy_buffers_size 10m;
    proxy_temp_file_write_size 10m;
}

    


故障描述
一次新sdk发布上线后,nginx正向代理出现很多500的请求,查看error.log发现有client_body_temp permission denied报错。
client_body_temp
        如果客户端POST一个比较大的文件,长度超过了nginx缓冲区的大小,需要把这个文件的部分或者全部内容暂存到client_body_temp目录下的临时文件。

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

解决办法:
    1、chown app:app client_body_temp
    2、nginx中修改配置:增大client_body_buffer_size设置



作者:imxiaochao
链接:https://www.jianshu.com/p/a6993684801f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

有话要说