apache 的http代理出错 502 Proxy Error

前不久刚部署好的网站,忽然访问报错提示错误

引用

Http 502 Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.
Reason: Error reading from remote server


看了半天也没看出个所以然来, 刚刚还好好的呢!过了一会网站又能打开了....
查看了一下apache的access_log。发现

引用
.....Get / HTTP/1.0....

这是ie5.5以下的版本访问过。所以又找来台ie5.5(挺难整,这年头这玩意少了!!)访问了一下,然后出错。在用别的机器访问错误还有。在刷新了一会又好了!
就这个问题Google了一下发现是mod_proxy的事,又G了一下他的文档
http://httpd.apache.org/docs/2.3/mod/mod_proxy.html
找到了这一段话

引用
For circumstances where mod_proxy is sending requests to an origin server that doesn't properly implement keepalives or HTTP/1.1, there are two environment variables that can force the request to use HTTP/1.0 with no keepalive. These are set via the SetEnv directive.
These are the force-proxy-request-1.0 and proxy-nokeepalive notes.

译了一下大概是这意思(不是我译的)

引用
当mod_proxy向一个没有正确实现持久连接(KeepAlive)或HTTP/1.1的原始服务器发送请求的时候,可以通过设置两个环境变量来发送不带持久连接(KeepAlive)的HTTP/1.0请求。这两个变量是通过SetEnv指令设置的。
以下是force-proxy-request-1.0和proxy-nokeepalive的例子:
View Code
1 <Location /buggyappserver/>  
2 ProxyPass http://buggyappserver:7001/foo/
3 SetEnv force-proxy-request-1.0 1
4 SetEnv proxy-nokeepalive 1
5 </Location>


最后在我的httpd.conf的VirtualHost里加上了上面的两行设置

    <VirtualHost *:80>   
JkMount /hr/servlet/* worker1
JkMount /hr/*.jsp worker1
JkMount /hr/*.do worker1
ServerAdmin njgnini@163.com
ServerName www.iteye.com
ServerAlias www.iteye.com.cn
RewriteEngine On
RewriteRule ^/$ /hr/ [R,P]      

SetEnv force-proxy-request-1.0.1
SetEnv proxy-nokeepalive 1
</VirtualHost>

 


重启apache,在拿ie5.5访问O了

posted @ 2012-02-09 10:23  HeJonly  阅读(1782)  评论(0编辑  收藏  举报