问题说明
- 环境说明:
centos 6.5
nginx 1.13.7
tomcat 8.5+
jdk 1.8 -
问题描述
本地访问测试机接口发生异常
curl访问结果:
tomcat日志:
- 解决思路
开始的时候感觉是tomcat配置的问题,因为错误信息中多数是nio的错,感觉是自己修改了nio的连接方式,然后修改连接超时时间和连接池大小,可结果依旧报错,巧合是另外的一个项目也有问题,是session获取不到,另外的同事把tomcat降级了,修改为tomcat7,感觉有戏,我把自己的项目也放进去试了下,结果很理想,哈哈哈...
可是我降级之后,访问了下依旧报错,我日了,然后仔细回顾了下问题,发现报错的原因是因为客户端连接断开了导致的,但是我本地不可能出现这个问题,感觉会不会是nginx代理连接断开呢,感觉很有可能啊,所有出现图二,越过nginx访问tomcat,我靠,结果果然可以,接着看tomcat中的日志,发现报文体接收不全啊,遂开始看nginx的配置,什么超时时间啊都配置了下,结果还是不行,然后开始各种百度,google,发现出现这个问题的原因是nginx里对于小的反向代理请求是使用内存作中转,对于稍微大一点的,是直接通过磁盘中转的,然后查看nginx目录下proxy_temp文件夹权限问题,权限果然有问题,
chown nobody:nobody proxy_temp
重启nginx,再访问,结果很完美。