问题描述:将springboot项目打包成war包,部署到linux服务器上的tomcat的webapps的目录下。项目可以正常启动,但是说明书中的保存按钮无法正常保存内容。get请求直接报错414 Request uri too larger,post请求直接报500 Internal service error。
问题背景:1、本地项目启动,所有的功能都正常使用,但是打包为war包部署到服务器上之后,就报错。
2、将项目打包成war包,放到本地的tomcat得webapps下面也正常。
3、在另外一台服务器上部署tomcat,并且将war包放到tomcat下的webapps下也正常。
4、将war包放到本台linux服务器上,报错414和500
解决办法:1、刚开始为get请求,报414 Request URI too large时,通过修改tomcat的server.xml配置文件和nginx的nginx.conf配置文件client_header_buffer_size 512k;large_client_header_buffers 4 512k。不奏效!
2、通过在接口方法体中修改return参数,看请求是否能进入方法体。发现get请求可以进入方法体但无法返回参数报414,但是post请求连方法体都进不去报500。
3、最后实在找不到问题,启动日志也不报错,通过xshell配置隧道,远程连接tomcat进行调试。(配置xshell隧道方
法:右键—属性—SSH隧道——localhost:tomcat启动端口号(Linux上的Tomcat的端口号))。
4、最终还是没找到错误信息。回头思考:此种访问方式无法找到对应的问题,日志不报错。考虑到:此种方式为通过域名访问(将动态ip地址和端口号绑定,形成一个域名,类似于百度),可能在域名访问转发HTTP协议时,出现网络拦截问题。最终和网络安全部沟通,确实拦截了post请求。(此时心里真是一万只草泥马)
底层原理:域名访问时,绑定的ip地址和端口号,由于网络访问限制,导致协议被拦截。报500错误!