代理服务器从上游服务器收到无效响应

时间:2012-03-23 04:52:43

标签: apache tomcat proxy

我们在tomcat上部署了一个应用程序。 要访问应用程序,我们使用apache向tomcat发送请求。 在随机浏览器中给出以下响应。

Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /sampleapp/<http://samplehost.com:8080/sampleapp/>.
Reason: Error reading from remote server
________________________________
Apache/2.2.21 (Unix) Server at samplehost.com Port 8080

此错误并非始终存在,到目前为止,我们仅在使用IE的客户端计算机中获取此错误。在使用Firefox的同一台客户端计算机上,它运行良好。

以下是Apache日志中针对失败请求的错误跟踪

[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] (20014)Internal error: proxy: error reading status line from remote server localhost:8081, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm
[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] proxy: Error reading from remote server returned by /sampleapp/opp/searchResult.htm, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm

请求失败时,没有任何内容在tomcat日志上打印出来。

以下是与apache相关的信息安装

-bash-3.00$ ./httpd -v
Server version: Apache/2.2.21 (Unix)
Server built:   Sep 21 2011 20:00:58

当试图找出加载的模块时,我得到以下错误

-bash-3.00$ /usr/local/apache2/bin/apachectl -t -D DUMP_MODULES
httpd: Syntax error on line 64 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_authnz_ldap.so into server: ld.so.1: httpd: fatal: libldap-2.4.so.2: open failed: No such file or directory

1 个答案:

答案 0 :(得分:8)

您在帖子中没有提及,但我怀疑您正在启动从浏览器到Apache的SSL连接,其中配置了VirtualHosts,并且Apache为您的Tomcat提供了代理服务。

在(某些版本?)IE中有一个严重的错误,它在SSL连接中发送“错误的”主机信息(参见下面的编辑)并混淆了Apache VirtualHosts。简而言之,所提供的服务器名称是IP的反向DNS解析之一,而不是URL中的那个。

解决方法是为每个SSL虚拟主机/服务器名称提供一个IP地址。简而言之,你必须得到像

这样的东西

1个服务器名称== 1个IP地址== 1个证书== 1个Apache虚拟主机

修改

虽然结论是正确的,但这里更好地描述了问题的识别 http://en.wikipedia.org/wiki/Server_Name_Indication