Url
使用 Amazon ELB 時 URL 的長度是否有限制?如果是這樣,有沒有辦法增加它?
由於 Amazon ELB 截斷了長(超過 1K 個字元)的 URL,我們似乎遇到了錯誤。
我搜尋了通常的嫌疑人,但找不到任何有關 Amazon ELB 的 URL 長度限制的討論。
亞馬遜 URL 的長度是否有限制?如果是這樣,有沒有辦法增加這個限制?
我用一個簡單的 bash 腳本對我在 ELB 後面執行的域進行了測試:
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
失敗的請求由 Apache 記錄在不同的文件中,因為
GET
字元串位於Host:
標頭之前,因此 Apache 從未確定要使用哪個虛擬主機。儘管如此,它仍然是Apache 響應,而不是 ELB,甚至在單個
GET
字元串中超過 128KB。完整的 128KB 請求記錄在預設的 Apache 日誌文件中。256KB 後,curl
無法處理請求。Amazon ELB 中似乎沒有任何 URL 長度限制。