apache - 上传文件时mod_proxy 502代理错误

标签 apache file-upload proxy lighttpd mod-proxy

我正在尝试配置以下环境:运行 apache 和 mod_proxy 的 VPS 来代理在家中运行的另一台服务器(后端)。我可以下载文件,但是当我尝试上传文件时,POST 请求失败并出现此错误:

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /upload/upload.php.

Reason: Error reading from remote server

我不明白的是为什么它适用于低至 500 字节的文件。而且效果很快!但是,当我尝试上传一个 4kb 的小文件时,它需要很长时间才能出现错误。正如预期的那样,在没有 VPS 的情况下直接访问后端时,上传工作完美无缺。我为双方尝试了很多配置,也尝试增加超时,但我认为这不是可行的方法。后端安装了 mod_access,当文件上传失败时它不会记录任何内容。

apache 记录以下内容:

[Thu Nov 07 22:26:03.044309 2013] [proxy_http:error] [pid 9173] (70007)The timeout specified has expired: [client 177.148.252.99:54097] AH01102: error reading status line from remote server myhome.com, referer: http://frontend.com/upload/
[Thu Nov 07 22:26:03.044423 2013] [proxy:error] [pid 9173] [client 177.148.252.99:54097] AH00898: Error reading from remote server returned by /upload/upload.php, referer: http://frontend.com/upload/

VPS 运行 Apache 2.4.6,在家里运行的服务器是带 SSL 的 Lighttpd 1.4.32。

重定向到后端的虚拟主机配置如下:

<VirtualHost *:80>
        ServerAdmin webmaster@frontend.com
        ServerName frontend.com
        ProxyPass        / http://backend.com/
        ProxyPassReverse / http://backend.com/
</VirtualHost>

前端: http://frontend.com/upload/

后端: http://backend.com/upload/

你有什么想法吗?

最佳答案

您看到的错误是由于与后端系统的代理连接超时造成的。您需要将 ProxyTimeout 值设置为大于默认值的值。我建议您从 60 秒的值开始,看看它是如何工作的。

ProxyTimeout 60

此外,我同意 Varghese 的观点,即您要设置环境变量以配置连接以分 block 发送数据。不幸的是,对于正确的设置是否应该存在一些混淆,因此您可以尝试以下任一方法:

SetEnv proxy-sendchunked  1

SetEnv proxy-sendchunks  1

祝你好运。这是一个令人沮丧的问题。


mod_proxy 中可用的环境变量:

https://httpd.apache.org/docs/2.4/mod/mod_proxy_http.html

关于apache - 上传文件时mod_proxy 502代理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851192/

相关文章:

proxy - actionHero.js 设置 Http header

php - 如何在 PHP 中解析 A​​pache 的错误日志?

php - 为什么已经定义的环境变量需要 putenv()?

php - 大文件上传时出现 aw snap 错误

java - 将上传文件的路径传递给Java程序

c# - C# Web 代理中的 SSL;如何确定请求是否为 SLL?

node.js - HTTP 前端和 HTTPS 后端之间的代理

django - Apache 不会以错误开始

Perl CGI 通过网络浏览器下载文件

c# - 从IOS图片上传到.net app : Rotate