返回的状态是413 Request Entity Too Large(nginx/1.2.1),再百度发现,这是nginx设置了允许上传的包的问题,这也就合乎上面的情况,后台没有任何异常信息,因为请求根本就没到达我们的tomcat,nginx发现请求的包大于设置的值,接直接返回413了。
解决的办法是,设置nginx的包大小限制为适当的值,如下图
client_max_body_size 50m;
如果设置之后发现配置未生效,还是一直报413的错误
通过直接请求应用的服务器没问题,再次确定这次问题跟 nginx 的配置有关,通过调整client_max_body_size的位置后错误信息变了,变为Gateway 504 Time out,超时,好像到这里问题就很明确了,由于这次请求的接口的主要业务是走的数据传输,数据交换,数据量比较大,时间比较长,超过了nginx默认的代理时长,再结合之前的错误信息发现,每次只要请求时间超过1分钟就立即报错,OK,那么接下来修改Nginx的代理超时时间配置,在location中设置一下内容,问题解决
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
如果java后台报以下错误,则可能是项目设置的允许上传文件大小小于上传的文件或者接口响应时间设置过小。设置项目允许上传文件大小和接口超时还未解决,则按以上配置nginx。
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
Caused by: java.io.IOException: Broken pipe