Http amazon负载平衡器返回错误代码400

Http amazon负载平衡器返回错误代码400,http,amazon-ec2,load-balancing,Http,Amazon Ec2,Load Balancing,我们在amazon上有一个负载均衡器,可以平衡4台服务器。 当向负载平衡器发送特定的HTTP请求时,我得到HTTP错误代码400。 但是当我直接向每个服务器发送相同的请求时,我得到了HTTP200OK。 使用平衡器时,其他请求工作正常 有什么想法吗 谢谢。我不知道这是否对你有帮助,但我也遇到了类似的问题。我使用的是jMeter,当通过AWS负载平衡器访问我的实例时,我总是会得到:HTTP/1.1400 BAD_请求。 经过大量调试后,我发现我发送的是一个空头(没有名称和值),因为我在jMeter

我们在amazon上有一个负载均衡器,可以平衡4台服务器。 当向负载平衡器发送特定的HTTP请求时,我得到HTTP错误代码400。 但是当我直接向每个服务器发送相同的请求时,我得到了HTTP200OK。 使用平衡器时,其他请求工作正常

有什么想法吗


谢谢。

我不知道这是否对你有帮助,但我也遇到了类似的问题。我使用的是jMeter,当通过AWS负载平衡器访问我的实例时,我总是会得到:HTTP/1.1400 BAD_请求。
经过大量调试后,我发现我发送的是一个空头(没有名称和值),因为我在jMeter的HTTP头管理器中有一个空行。因此,我个人认为,AWS ELB进行了一些头检查,并返回HTTP 400,即使很难,我也不会对直接向我的实例发送相同的请求有任何问题。我不知道这是否对你有帮助,但是你应该仔细检查你的头是否有像这样愚蠢的错误:D

我也有类似的问题,这是由于ALB不接受小写的HTTP方法造成的

GET http://myhost.com/foo -> HTTP 200
get http://myhost.com/foo -> HTTP 400

就我而言,这是标题问题

ELB HealthChecker正在向我的web服务器发送healthcheck请求,nginx回复了400

问题是ELB HealthChecker没有随请求发送任何标题。 根据Web服务器的配置,这可能会返回400个错误代码

要检查是否存在这种情况,请使用curl复制“no headers”请求:

curl -I -H 'User-Agent:'  -H 'Accept:' -H 'Host:' http://yourservice/health/
解决方案是配置nginx端点,无论是否存在请求头,该端点都将返回200:

location = /health/ { return 200; }

在我的例子中,端口443的目标组使用HTTP协议而不是HTTPs,我得到的是“客户端使用HTTP连接到HTTPs服务器”

欢迎使用Stackoverflow。为了得到好的回答问题,请考虑贴上一些粘贴在你这里的HTTP报头…O…M…我真不敢相信这就是让我无法自拔,让我发疯的原因。谢谢你,莫德,如果没有你,我想我不会注意到这种差异。这就是我们的情况。规范确实说了“所有大写字母都按惯例”