讲个笑话,没有收到请求。
起因
业务系统要与第三方系统进行交互, 第三方处理完后会回调业务系统反馈处理结果。某天收到用户反馈,业务系统没有收到处理结果,查询业务系统日志后发现没有接收到第三方系统的回调信息,联系第三方工作人员查询后,发现回调业务系统时报错 “Request Entity Too Large”。 好吧,请求被服务器拒收了。
排查
1、排查业务系统看是否有回调请求进来,没有看到相应日志。(猜测是第三方服务问题)
2、申请第三方协助查询原因,发现http请求报错:Request Entity Too Large
当向服务器发送POST请求并附加数据时,如果数据过大,超过了服务器所能处理的最大大小限制,就会出现"Request Entity Too Large "错误。该错误通常指HTTP 413状态码,表示请求实体太大。
3、重新排查业务系统服务,原来服务器最近有被调整过,查询 Nginx 日志发现如下报错:
access.log 请求状态 413
error.log 打印 client intended to send too large body
原来是被 Nginx 服务器把请求拦截掉了, 请求体包含文件,大小超出了 Nginx 配置默认的大小 1m。
解决
既然已经定位到问题了,那么只需要修改 Nginx 对文件的大小限制就好了。
修改 nginx.conf 的 client_max_body_size
属性值为符合业务场景的大小。重启 Nginx 服务。
http {
#配置nginx 上传文件最大限制,默认 1M
client_max_body_size 100m;
include mime.types;
default_type application/octet-stream;
}