返回xml过长时被nginx截断的解决办法

问题描述:
通过网页获取数据,数据格式为xml。当xml比较短时,可以正常获取数据。但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,发现xml被截断了。

服务器环境:CentOS 6.5,Nginx 1.0.15,PHP 5.3.3

解决方法:
对比发现,使用apache代替nginx的时候可以正常获取长的xml数据。确定问题出现在nginx的配置上。
查看ngnix日志(yum安装默认目录:/var/log/nginx/)发现问题所在。
"/var/lib/nginx/tmp/fastcgi/1/01/0000000011"failed (13: Permission denied) while reading upstream, client: 192.16 8.56.1, server: , request:"GET /index.php?param=****** HTTP/1.1", upstream:"fastcgi://127.0 .0.1:9000", host:"centos.ctrip.dev:8001"

问题出现在此时nginx临时向/var/lib/nginx/tmp/目录下写入了临时数据,而执行nginx的用户没有该目录的写入权限。
解决该权限问题后问题解决。

另外php.ini nginx 对请求大小的配置也可能有影响,HTTP协议中使用Content-Length这个头来告知数据的长度。

===================================

过PHP请求接口时发现接口的内容输出没有完整的返回整个数据,早上只修改了nginx api_metrics插件里的计算response大小的代码,观察日志发现一条:
"/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反而不能访问了。

PS:要先用命令查一下50上的临时文件夹在那个地方,对应的权限是什么 ,不同环境的路径是不一样的

最新文章

  1. Neutron 功能概述 - 每天5分钟玩转 OpenStack(65)
  2. Microsoft Azure News(6) Azure新F系列虚拟机
  3. windows的页自映射机制
  4. Android基本知识
  5. jQurey对表单表格的操作及更多应用(方法型)
  6. 时间类处理<1>
  7. JQ中$(document.ready())
  8. OP(Over-provisioning)预留空间
  9. 使用Node.js搭建静态资源服务器
  10. 页面引入css用link和import的区别
  11. models中的pk主键用法
  12. Java并发 线程池
  13. JAVA中接口的使用
  14. ActiveReports 大数据分析报告:2019软件开发者现状
  15. Python request库与爬虫框架
  16. 071 SparkStreaming与SparkSQL集成
  17. Codeforces.1028F.Make Symmetrical(结论 暴力)
  18. 100-days: seventeen
  19. 小C的数学问题 【单调栈】
  20. int __get_order(unsigned long size)

热门文章

  1. iOS - 利用 iTunes 接口检查 App 版本更新
  2. Shell case
  3. binlog介绍
  4. zabbix触发器表达式详解
  5. HOJ-1005 Fast Food(动态规划)
  6. 一些常用的opencv函数
  7. linux:帮助命令help、man、info
  8. Redis is loading the dataset in memory
  9. NTLM
  10. 洛谷 P4697 Balloons [CEOI2011] 单调栈/dp (待补充qwq)