mod_proxy 502 Proxy上传文件时出错

时间:2013-11-08 03:40:32

标签: 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/

你有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

ProxyTimeout 60

此外,我同意Varghese您要设置环境变量以配置连接以块的形式发送数据。不幸的是,对于是否应该使用正确的设置存在一些困惑,因此您可以尝试以下任一方法:

SetEnv proxy-sendchunked  1

SetEnv proxy-sendchunks  1
祝你好运。这是一个令人沮丧的问题。

答案 1 :(得分:1)

我遇到了类似的问题,并在声明中得到了解决,我在ProxyPassReverse声明之后。

您必须使用的命令是:SetEnv proxy-sendchunks 1