nginx反向代理tomcat访问时浏览器加载失败,出现 ERR_CONTENT_LENGTH_MISMATCH 问题
问题说明: 测试机上部署了一套业务环境,nginx反向代理tomcat,在访问时长时间处于加载中,十分缓慢!
通过浏览器调试(F12键->Console),发现有错误ERR_CONTENT_LENGTH_MISMATCH 出现:
查看nginx日志(当出现故障时,要记得第一时间查看相关日志) .......open() "/Data/app/nginx/proxy_temp/3/00/0000000003" failed (13: Permission denied) while reading upstream, client:...... server: localhost, request: "GET
原因: nginx在做代理时,其工作进程对大文件做了缓存,这个缓存在 %nginx%/proxy_temp 目录下,主进程在读取缓存的时候由于权限问题而无法访问。
[root@dev-new-test proxy_temp]# pwd /Data/app/nginx/proxy_temp [root@dev-new-test proxy_temp]# ll 总用量 40 drwx------ 33 www www 4096 11月 22 17:07 0 drwx------ 34 www www 4096 11月 22 17:07 1 drwx------ 34 www www 4096 11月 22 17:07 2 drwx------ 35 www www 4096 11月 22 17:07 3 drwx------ 35 www www 4096 11月 22 17:16 4 drwx------ 35 www www 4096 11月 22 17:16 5 drwx------ 34 www www 4096 11月 22 16:46 6 drwx------ 33 www www 4096 11月 22 16:46 7 drwx------ 33 www www 4096 11月 22 16:47 8 drwx------ 33 www www 4096 11月 22 17:07 9
发现nginx的缓存目录都是www权限,而nginx进程的启动用户是nobody,因为需要将缓存的目录权限修改成nobody! [root@dev-new-test proxy_temp]# ps -ef|grep nginx nobody 28072 46482 0 18:09 ? 00:00:00 nginx: worker process ......
[root@dev-new-test proxy_temp]# pwd /Data/app/nginx/proxy_temp [root@dev-new-test proxy_temp]# chown -R nobody.nobody ./* [root@dev-new-test proxy_temp]# ll 总用量 40 drwx------ 33 nobody nobody 4096 11月 22 17:07 0 drwx------ 34 nobody nobody 4096 11月 22 17:07 1 drwx------ 34 nobody nobody 4096 11月 22 17:07 2 drwx------ 35 nobody nobody 4096 11月 22 17:07 3 drwx------ 35 nobody nobody 4096 11月 22 17:16 4 drwx------ 35 nobody nobody 4096 11月 22 17:16 5 drwx------ 34 nobody nobody 4096 11月 22 16:46 6 drwx------ 33 nobody nobody 4096 11月 22 16:46 7 drwx------ 33 nobody nobody 4096 11月 22 16:47 8 drwx------ 33 nobody nobody 4096 11月 22 17:07 9
这样,就解决了上面出现的错误问题:
另外: nginx代理tomcat,访问缓慢问题,还有一种可能原因就是tomcat默认的根目录是webapps/ROOT,如果不是ROOT,可能也会导致访问问题。 因为,在部署环境时,首先将webapps下的文件全部删除,然后将war包上传到webapps下改名为ROOT.war,最好说服开发同事在打包时就 打包成ROOT.war名称,不然后续上传后就手动修改,这样tomcat重启后,就会自动解压ROOT.war包,自然根目录就会是webapps/ROOT
还有在部署多个tomcat实例时,尽量不要拷贝已用的tomcat并修改端口后投入使用,最好是拷贝源码解压后的纯净的tomcat,然后修改端口投入使用。
当然,访问页面没有反应时,也可能是因为服务器磁盘爆满导致!多方面考虑吧~
- 设计模式之代理模式(二)CGLIB动态代理实现
- ios手势复习值之换图片-转场动画(纯代码)
- 顺序广播和无序广播
- Netflix Zuul与Nginx的性能对比
- 最有价值的50道java面试题(一)
- 用 Python 从零开始玩微信跳一跳
- ios地图小例子和手势的使用 供大家参考一下呦
- Spring Cloud源码分析(四)Zuul:核心过滤器
- basicAnimation移动图形
- 一个layer可以跟着画完的线移动ios程序 好玩啊。
- 最有价值的50道java面试题(二)
- android自定义属性
- kvo深入浅出举例
- 深入理解Android 自定义attr Style styleable以及其应用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 网络安全实验室平台(基础关)
- Unity 基于excel2json批处理读取Excel表并反序列化
- dotnet OpenXML 文本 Text Line Break 的作用
- CVE-2020-1362 漏洞分析
- wpa_supplicant 框架
- 【LeetCode每日一题】25. Reverse Nodes in k-Group
- upload-labs第一关
- upload-labs第2~8关
- dotnet OpenXML 文本 ParagraphProperties 的属性作用
- 相信坚持的力量!Elastic 日报 1000期+ 了......
- dotnet OpenXML 文本 EndParagraphRunProperties 的作用
- dotnet OpenXML 文本字体的选择规则
- 获取手机nfc的MW version 和 FW version 记录
- Sublime编辑器配置Python环境
- dotnet OpenXML 从文档生成创建文档的代码的库