返回xml过长时被nginx截断的解决办法
返回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上的临时文件夹在那个地方,对应的权限是什么 ,不同环境的路径是不一样的
返回xml过长时被nginx截断的解决办法的更多相关文章
- 返回值过长时被nginx截断的解决办法
		
今天在写接口时碰到了这个问题,返回json格式的数据,但是被截断了经过排查,才发现是数据过大超出缓冲区最大容量,而将数据写入临时文件时又没有权限,所以再返回时,超出缓冲区的数据将丢失解决方法:给fas ...
 - [转] IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法
		
IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法 源文件:http://www.cnblogs.com/yuejin/p/3385584.html ...
 - 爬虫爬数据时,post数据乱码解决办法
		
最近在写一个爬虫,目标网站是:http://zx.bjmemc.com.cn/,可能是为了防止被爬取数据,它给自身数据加了密.用谷歌自带的抓包工具也不能捕获到数据.于是下了Fiddler. F ...
 - Bootstrap中关闭第二个模态框时出现的问题和解决办法
		
Bootstrap中关闭第二个模态框时出现的问题和解决办法 1.关闭第二个模态框时,第一个模态框跟着消失. 解决办法: 第二个模态框的代码不要写在第一个模态框里面,确保两个模态框相对独立; 2.关闭第 ...
 - oracle执行update语句时卡住问题分析及解决办法
		
转载:http://www.jb51.net/article/125754.htm 这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值, ...
 - IDEA使用maven构建时控制台中文乱码的解决办法
		
使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ...
 - mongodb 更新数据时int32变为double的解决办法 & 教程
		
https://www.runoob.com/mongodb/mongodb-mongodump-mongorestore.html mongodb 更新数据时int32变为double的解决办法 ...
 - java下载文件时文件名出现乱码的解决办法
		
转: java下载文件时文件名出现乱码的解决办法 2018年01月12日 15:43:32 橙子橙 阅读数:6249 java下载文件时文件名出现乱码的解决办法: String userAgent ...
 - nginx访问日志出现大量的500状态信息,用postman返回 Internal Server Error,Too Many Attempts.错误的解决办法
		
用postman的post方法访问某个URL时,出现以下错误: { "status": "1", "message": " Int ...
 
随机推荐
- JDBC改进版
			
将setObject隐藏,用反射获取model里面的数据 /** * @Date 2016年7月19日 * * @author Administrator */ package com.eshore. ...
 - git回退之前版本
			
所有没有 commit 的本地改动,都会随着 reset --hard 丢掉,无法恢复. 如果只是想回到 pull 之前当前分支所在的commit位置,则可以.比方说你在 master 分支上,可以用 ...
 - 浅谈SharePoint 2013 站点模板开发
			
一直以来所接触的SharePoint开发,都是Designer配合Visual Studio,前者设计页面,后者开发功能,相互合作,完成SharePoint网站开发.直到SharePoint 2013 ...
 - php intval的取值范围:与操作系统相关
			
php intval的取值范围:与操作系统相关,32位系统上为-2147483648到2147483647,64位系统上为-9223372036854775808到922337203685477580 ...
 - 重写jquery serialize 方法
			
/**取表单中的对象 *attrName:为元素的的属性名称不设置则默认为name */ $.fn.serialize = function (attrName) { var ret = {}; if ...
 - OpenJ_Bailian - 4152 最佳加法表达式  dp
			
http://bailian.openjudge.cn/practice/4152?lang=en_US 题解 :dp[i][j]代表前i个字符加j个加号可以得到的最小值,于是dp[i+k[j+1]可 ...
 - oozie学习笔记
			
#################################################################################################### ...
 - Linux IO多路复用之epoll网络编程及源码(转)
			
原文: 前言 本章节是用基本的Linux基本函数加上epoll调用编写一个完整的服务器和客户端例子,可在Linux上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网 ...
 - tornado : 异步、非阻塞
			
The terms asynchronous and non-blocking are closely related and are often used interchangeably, but ...
 - 日期 date +%F-%T-%N
			
date +%F-%T-%N 2016-03-24-14:40:13-997433641 %% a literal % %a locale's abbreviated weekday nam ...