gpt4 book ai didi

Apache 使用 mod_proxy 和大文件返回 502 Bad Gateway

转载 作者:行者123 更新时间:2023-12-01 01:20:03 27 4
gpt4 key购买 nike

通过配置为代理的 Apache 发送文件到使用 Mongoose 网络服务器的本地应用程序时,我看到了一个问题。

我的设置:

Apache (port 80) <-> mod_proxy <-> Mongoose (port 9090)



mod_proxy 配置为将某些 URL 从端口 80 传输到 localhost:9090。

Mongoose 只接受经过身份验证的响应。这适用于正常(小)请求。但是,对于大文件传输,Apache 返回 502 Bad Gateway 响应。

发生的事情(嗯,实际上只是我对发生的事情的分析)是,当我们的客户端(.net 客户端,期望启用 100)尝试发送文件时,它会发送标题,然后直接发送文件的内容。

Mongoose 收到传输的 header ,检测到它没有经过身份验证并返回 401 Unauthorized 并关闭连接。现在 Apache(仍在接收和处理文件传输)无法再转发数据并返回 502 Bad Gateway(代理服务器收到来自上游服务器的无效响应)。

在外部接口(interface)上嗅探时,我看到 .net 客户端发送 header ,然后在 20 毫秒内发送内容,但没有收到 100 Continue。接收完成后,Apache 返回 502。

嗅探内部接口(interface)时,我看到 header 和正文组合成一个 16384 字节的 tcp 数据包。 Mongoose 在几毫秒内回复 401 并关闭连接。

看起来 Apache 检测到连接的关闭但忽略了 401 并且不转发它。是否有可能让 Apache 正确转发 401 而不是回复 502?

目前,我将应用程序更改为仅在检测到 401 时从连接中读取所有数据,但这只是一种解决方法,因为这归结为发送完整文件两次。由于文件可能有数百兆字节,这会给我们的系统带来相当大的压力。

我们在 ARM 系统上使用 Apache 2.2.9 (Debian)。

最佳答案

您可能遇到了此处提交的 Apache 错误 https://bz.apache.org/bugzilla/show_bug.cgi?id=55433

相关链接:

  • http://osdir.com/ml/bugs-httpd/2013-08/msg00119.html
  • http://osdir.com/ml/bugs-httpd/2013-08/msg00094.html
  • http://dev.eclipse.org/mhonarc/lists/jetty-users/msg04580.html

  • PS:我遇到了同样的问题,这是一个相当晦涩的错误(既要查找有关它的信息,又要查找错误本身)。 FWIW,nginx 不呈现相同的行为。

    关于Apache 使用 mod_proxy 和大文件返回 502 Bad Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940487/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com