使用Amazon ELB时,URL的长度是否有限制? 如果是的话,有没有办法增加呢?

由于Amazon ELB截断了一个长(超过1K个字符)的URL,我们似乎遇到了一个错误。

我已经search了通常的嫌疑犯,但找不到任何有关Amazon ELB的URL长度限制的讨论。

Amazonurl的长度是否有限制? 如果是的话,有没有办法增加这个限制?

我用一个简单的bash脚本对一个ELB后面运行的域进行了testing:

S='a'; URL='http://example.com/?foo='; while true; do echo $URL$S | wc -c; curl -I "$URL$S"; S=$S$S; done 

这工作得很好:

 2081 HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Date: Tue, 05 Feb 2013 15:01:44 GMT Server: Apache/2.2.22 (Ubuntu) Vary: Accept-Encoding Connection: keep-alive 4129 HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Date: Tue, 05 Feb 2013 15:01:46 GMT Server: Apache/2.2.22 (Ubuntu) Vary: Accept-Encoding Connection: keep-alive 

但一旦超过8192长度的障碍就失败了:

 8225 HTTP/1.1 414 Request-URI Too Large Content-length: 337 Content-Type: text/html; charset=iso-8859-1 Date: Tue, 05 Feb 2013 15:01:47 GMT Server: Apache/2.2.22 (Ubuntu) Vary: Accept-Encoding Connection: keep-alive 16417 HTTP/1.1 414 Request-URI Too Large Content-length: 337 Content-Type: text/html; charset=iso-8859-1 Date: Tue, 05 Feb 2013 15:01:47 GMT Server: Apache/2.2.22 (Ubuntu) Vary: Accept-Encoding Connection: keep-alive 

失败的请求被Apachelogging在一个不同的文件中,因为GETstring出现在Host:头之前,因此Apache从未确定要使用哪个虚拟主机。

尽pipe如此,它仍然是Apache响应的,而不是ELB,甚至在单个GETstring中超过128KB。 完整的128KB请求logging在默认的Apache日志文件中。 在256KB之后, curl无法处理请求。

它看起来不像Amazon ELB中的URL长度限制。