m1h*_*1h4 8 apache https jetty multipart mod-proxy
我们的Web服务器(配置为ssl - > apache - > jetty)随机拒绝带有400 Bad Request错误代码的多部分上传POST请求.apache错误日志(在信息级别)显示以下两个错误:
[info] [client x1.y1.z1.w1] (70007)The timeout specified has expired: SSL input filter read failed.
[error] proxy: pass request body failed to x.y.z.w:8087 from x1.y1.z1.w1
[info] [client x1.y1.z1.w1] Connection closed to child 74 with standard shutdown
Run Code Online (Sandbox Code Playgroud)
要么
[info] [client x2.y2.z2.w2] (70014)End of file found: SSL input filter read failed.
[error] proxy: pass request body failed to x.y.z.w:8087 from x2.y2.z2.w2
[info] [client x2.y2.z2.w2] Connection closed to child 209 with standard shutdown
Run Code Online (Sandbox Code Playgroud)
这两种情况都是客户端在400 Bad Request中产生的.有时我们的jetty服务器甚至没有看到请求意味着它在apaches端被拒绝,有时它开始处理它只是被拒绝(这在我们的UploadFilter中表现为MultipartException)
我们有mod_proxy设置使用后备负载平衡方案但日志显示还没有触发回退导致我相信这不是问题的原因.
我尝试设置SetEnv proxy-sendcl 1但是没有改变任何东西.
上传请求是1mb.只有这些多部分文件POST请求失败,我们有多个GET请求同时进入,并且它们始终按预期工作.
如果有人可以分享任何意见或建议,我将非常感激!谢谢
请检查这个:https ://issues.apache.org/bugzilla/show_bug.cgi?id=44592
该问题可能是由 HTTP keepalive(KeepAliveTimeout 指令)导致的,该指令正在终止与慢速客户端(tcp 延迟、慢速请求正文创建等)建立的连接。
尝试提高 apache 配置中的 KeepAliveTimeout,但不要将其设置得太高,以免杀死您的服务器 (DOS)。