2012-03-23 1615 views
24

我们在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 
+0

你可能想尝试尝试像这样在Apache配置(尝试不同的组合): // SETENV力代理的请求1.0 1 //小号etEnv proxy-nokeepalive 1 // SetEnv proxy-initial-not-pooled 1 // KeepAlive Off(or On) 很多人都有类似的问题,不幸的是他们有不同的解决方案。或者你尝试从Apache切换到另一个反向代理。 – HelmuthB 2012-06-08 12:59:53

+0

这也可能发生在Firefox上,似乎是https问题 – virtualeyes 2012-11-17 09:55:58

回答

8

这是没有提到在您的文章,但我怀疑你是启动从浏览器到配置了VirtualHosts的Apache的SSL连接,并且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

+0

因此,您将无法在同一IP上托管多个SSL虚拟主机?这根本不可能是真实的,因为我现在正在做。我有几个网站,其中apache2仅作为代理工作。其中2个网站使用SSL,效果很好。所有网站都在不同的内部IP上,但只有一个公共IP。 – 2012-05-23 18:35:54

+1

@Patrik Alienus。浏览器在Wikipedia文章中列为不支持SNI的网站,是否真的测试过您的网站?如果它有效,那么也许你应该纠正维基百科的文章。我个人的经历是,我在XP上运行IE的客户遇到了这个问题。 – 2012-05-23 20:44:25

+0

嗯不,关于SNI的细节回避了我:/我运行的网站工作正常,从来没有一个窗口和/或移动客户端连接到他们。我实际上认为它在所有浏览器中都是一样的。所以...n/m我猜:) – 2012-05-26 21:27:59

相关问题