23
2013
07

解决 nginx 返回数据不完整的方法

通过PHP请求接口时发现接口的内容输出没有完整的返回整个数据,早上只修改了nginx api_metrics插件里的计算response大小的代码,观察日志发现一条:

2012/08/28 02:13:05 [crit] 1912#0: *21685 open() "/usr/local/nginx/proxy_temp/8/00/0000000008" failed (13: Permission denied) while reading upstream, client: 59.***.**.***, server: ******.banckle.com, request: "GET /livechat/livechat-backend.do HTTP/1.1", upstream: "http://127.0.0.1:8084/livechat/livechat-backend.do", host: "******.banckle.com"

该目录无法被nginx的nobody账户访问,那就设置权限呗:

sudo chown -R nobody:nobody /usr/local/nginx/proxy_temp/

刷新浏览器,一切正常。

出现这个问题的原因是nginx里对于小的反向代理请求是使用内存作中转,对于稍微大一点的,是使用文件系统来做中转。然后之前调试nginx插件的时候,为了方便访问日志等数据就在root下调试的,部分子目录被nginx删除后重建,owner变了,所以正式的nginx反而不能访问了。

« 上一篇 下一篇 »

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。