我使用一个AWS EC2实例(与负载均衡器相关联)来承载连接到AWS RDS上数据库的服务器代码。
Android应用程序是服务器的客户端之一,并使用HttpUrlConnection进行连接。当应用程序调用POST上传编码的媒体文件时,从EC2服务器实例获取响应需要等待很长时间。另外,当收到响应时,它是一个HTTP504。因此,我致力于将实例的空闲超时值提高到600秒,之后我将得到一个HTTP 502,因此Elastic Beanstalk应用程序的健康状态将切换到警告或Critical。
为了交叉检查我的服务器代码,我使用了一个Localhost Tomcat v7.0服务器(类似于http://localhost:8080/abc/..)。为了使用邮递员上传相同的数据,我获得了一个成功的HTTP201。因此,现在我很清楚,服务器代码没有问题。
但是,当我试图通过Postman到达AWS端点时,我得到了与以下相同的HTTP 502:

这是否与EC2/负载均衡器上的配置或RDS本身有关?
发布于 2016-08-12 04:16:31
错误可能正是它所说的:代理服务器从上游服务器接收到无效的响应。有什么方法可以让您准确地看到发送到代理服务器的内容吗?如果在EC2实例中看不到任何内容,请尝试在httpd.conf中设置“忽略ProxyBadHeader”。这样,您就可以看到Apache是否忽略了数据,因为一些错误被放在了头上。您的情况听起来非常熟悉:代理-to-tomcat-7/
发布于 2016-08-12 08:52:52
我解决了这个问题。我按照上面提到的@Eddimull提供的这链接来配置超时和代理头。在我的服务器代码中,在一个成功的上传(POST)中,我返回了作为响应一部分目的要上传的数据。这意味着我必须将编码的媒体文件作为响应的一部分发送回来,由于响应,我被困在了无效响应中。相反,我现在发出一个简单的答复,这解决了这个问题。
https://stackoverflow.com/questions/38909660
复制相似问题