通过Nginx访问后端应用,ERR_CONTENT_LENGTH_MISMATCH 问题的解决
2017-01-06 16:17
766 查看
遇到两个问题
1. 选择日期功能,不起作用了
2. 下载稍大一点的文件,只能下载一小半
页面调试发现有ERR_CONTENT_LENGTH_MISMATCH错误
系统:CentOS,Nginx,proxy到后端的tomcat
原因:nginx会缓存大文件到proxy_temp目录中,然而对这个目录没有读写权限
解决过程:
页面调试,抛出错误:net::ERR_CONTENT_LENGTH_MISMATCH
在chrome下,请缓存或强制刷新,response的status code为200
不强制刷新,response的status code为206
response header里面,content-length 的长度和目标文件的实际长度是一致的
都会出上面这个content length mismatch错误
如果不通过nginx,直接访问tomcat,没有这个错误,系统功能正常。
各种搜,先查到了一个帖子,问题描述很相似,提到是nginx gzip压缩,由于nginx对文件做了压缩准备,按照压缩后的长度来处理数据流,但通过proxy传过来的数据实际没有被压缩,没有传完,ngnix就关闭连接了。
从log来看,tomcat这边确实出现了很多org.apache.catalina.connector.ClientAbortException,与前面出现ERRO_CONTENT_LENGTH_MISMATCH的请求相匹配。
开始学习nginx gzip的配置(准备另做一篇笔记)
问题没有解决,先睡觉,醒了继续搞
醒了,还是没头绪,老老实实去查log
/var/log/nginx/error.log
啊哈,问题在这里:
[plain] view
plain copy
2015/05/30 00:11:53 [crit] 8808#0: *60 open() "/var/cache/nginx/proxy_temp/2/01/0000000012" failed (13: Permission denied) while reading upstream, client:...
proxy_temp目录,owner是root,rwx权限,其他用户没有权限。
nginx是以nginx用户身份运行的,没有权限,boom!
解决方法:
1. 用root身份运行nginx
2. 将proxy_temp目录的owner设置为nginx
3. 将proxy_temp目录的group设置为nginx,并赋予rwx权限
4. 禁用cache
不想用root去运行nginx,选择了方法3,让系统先work
遗留的问题:
1. proxy_temp目录的owner一开始为什么是root?应该是root吗?
2. 选择方法3后,发现对于同一个文件,会生成多份cache,这不合理,为什么会这样?
3. 对于我们这个情况,需要cache吗?会不会禁用cache才是更合理的选择
>> to be continued
黄鹤
2015-05-30
来源: http://blog.csdn.net/oldcrane/article/details/46274189
1. 选择日期功能,不起作用了
2. 下载稍大一点的文件,只能下载一小半
页面调试发现有ERR_CONTENT_LENGTH_MISMATCH错误
系统:CentOS,Nginx,proxy到后端的tomcat
原因:nginx会缓存大文件到proxy_temp目录中,然而对这个目录没有读写权限
解决过程:
页面调试,抛出错误:net::ERR_CONTENT_LENGTH_MISMATCH
在chrome下,请缓存或强制刷新,response的status code为200
不强制刷新,response的status code为206
response header里面,content-length 的长度和目标文件的实际长度是一致的
都会出上面这个content length mismatch错误
如果不通过nginx,直接访问tomcat,没有这个错误,系统功能正常。
各种搜,先查到了一个帖子,问题描述很相似,提到是nginx gzip压缩,由于nginx对文件做了压缩准备,按照压缩后的长度来处理数据流,但通过proxy传过来的数据实际没有被压缩,没有传完,ngnix就关闭连接了。
从log来看,tomcat这边确实出现了很多org.apache.catalina.connector.ClientAbortException,与前面出现ERRO_CONTENT_LENGTH_MISMATCH的请求相匹配。
开始学习nginx gzip的配置(准备另做一篇笔记)
问题没有解决,先睡觉,醒了继续搞
醒了,还是没头绪,老老实实去查log
/var/log/nginx/error.log
啊哈,问题在这里:
[plain] view
plain copy
2015/05/30 00:11:53 [crit] 8808#0: *60 open() "/var/cache/nginx/proxy_temp/2/01/0000000012" failed (13: Permission denied) while reading upstream, client:...
proxy_temp目录,owner是root,rwx权限,其他用户没有权限。
nginx是以nginx用户身份运行的,没有权限,boom!
解决方法:
1. 用root身份运行nginx
2. 将proxy_temp目录的owner设置为nginx
3. 将proxy_temp目录的group设置为nginx,并赋予rwx权限
4. 禁用cache
不想用root去运行nginx,选择了方法3,让系统先work
遗留的问题:
1. proxy_temp目录的owner一开始为什么是root?应该是root吗?
2. 选择方法3后,发现对于同一个文件,会生成多份cache,这不合理,为什么会这样?
3. 对于我们这个情况,需要cache吗?会不会禁用cache才是更合理的选择
>> to be continued
黄鹤
2015-05-30
来源: http://blog.csdn.net/oldcrane/article/details/46274189
相关文章推荐
- Nginx 大文件访问提示异常
- java报错
- java访问提示“”ERR_CONTENT_LENGTH_MISMATCH“”
- nginx 11个处理阶段 && nginx lua 8个处理阶段
- nginx长连接设置
- lua+nginx解析useragent实例
- nginx的日志切割
- python版本随意切换之python2.7+django1.8.7+uwsgi+nginx源码包部署。
- Nginx配置文件(nginx.conf)配置详解(二)
- nginx功能(1)--目录配置
- 如何正确配置Nginx+PHP
- 关于Nginx的一些优化(突破十万并发)
- nginx ssl
- php + nginx 编译安装
- 浅谈淘宝分布式存储FastDFS_v5.05的环境搭建和nginx集
- Nginx配置文件(nginx.conf)配置详解(一)
- nginx配置pathinfo模式
- django nginx 单域名 多站点 sessionid 冲突问题
- yum安装的nginx以及解决selinux导致无法访问的问题
- Nginx图片剪裁模块探究