背景
预生产环境发现一个报表页面展示不全,但本地、测试环境没问题,于是想到预生产是通过nginx转发到公网,检查了一下nginx日志(nginx/logs/error.log)发现有报错信息,正好就是请求页面的url。
nginx报错信息
2019/12/20 15:19:47 [crit] 31016#0: *241086 open() "/home/xxx/nginx/proxy_temp/8/58/0000010588" failed (13: Permission denied) while reading upstream, client: 101.21.125.253, server: localhost, request: "POST /xxUrl HTTP/1.0", upstream: "http://111.11.65.12:8800/xxUrl", host: "110.111.11.206:8080", referrer: "http://110.111.11.206:8080/xxUrl"
主要关注
failed (13: Permission denied) while reading upstream
解决方案
将问题百度了下,报错原因是:
当代理文件大小超过配置的proxy_temp_file_write_size值时,nginx会将文件写入到临时目录下(默认为/proxy_temp)。
如果nginx对/proxy_temp没有权限,就写不进去。
调整/proxy_temp权限为配置nginx的那个用户就可以了。
首先看下nginx是用哪个用户启动的
ps -ef | grep nginx
找到用户后设置文件夹权限
chown -R ggzy:ggzy /home/ggzy/nginx/proxy_temp
这样就可以了。