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,然后修改端口投入使用。

当然,访问页面没有反应时,也可能是因为服务器磁盘爆满导致!多方面考虑吧~

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
分类:  Nginx, Tomcat
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/6090907.html ,如需转载请自行联系原作者
相关文章
|
2月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
138 61
|
8天前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
76 11
|
7天前
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
159 7
|
16天前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
54 5
|
2月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
30天前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
|
2月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
77 3
|
2月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
132 3
|
2月前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式
|
2月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。