ELB(CLB,ALB,NLB)の種類ごとのHTTPレスポンスの違いについて、以下のHTTPリクエストをベースにいくつかのパターンで挙動を見てみました。

GET / HTTP/1.1
Host: xxxxxxxxx.com

echo “test”

HTTPリクエストをRFCに準拠しない形で送信時

CLB

$ echo "test" | nc clb.test.hayashier.com 80
HTTP/1.1 503 Service Unavailable.
Content-length:0

ALB

$ echo "test" | nc alb.test.hayashier.com 80
HTTP/1.1 400 Bad Request
Server: awselb/2.0
Date: Mon, 29 Jan 2018 05:49:34 GMT
Content-Type: text/html
Content-Length: 138
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
</body>
</html>

NLB

$ echo "test" | nc nlb.test.hayashier.com 80
HTTP/1.1 400 Bad Request
Date: Mon, 29 Jan 2018 05:49:41 GMT
Server: Apache/2.2.34 (Amazon)
Content-Length: 335
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.34 (Amazon) Server at ip-172-31-17-170.us-west-2.compute.internal Port 80</address>
</body></html>

“GEET / HTTP/1.1\r\nHost: clb.test.hayashier.com\r\n\r\n”

存在しないHTTPメソッド指定時

CLB

$ printf "GEET / HTTP/1.1\r\nHost: clb.test.hayashier.com\r\n\r\n" | nc clb.test.hayashier.com 80
HTTP/1.1 501 Method Not Implemented
Allow: GET,HEAD,POST,OPTIONS
Content-Type: text/html; charset=iso-8859-1
Date: Mon, 29 Jan 2018 06:13:44 GMT
Server: Apache/2.2.34 (Amazon)
Content-Length: 304
Connection: Close

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>GEET to /index.html not supported.<br />
</p>
<hr>
<address>Apache/2.2.34 (Amazon) Server at clb.test.hayashier.com Port 80</address>
</body></html>

ALB

$ printf "GEET / HTTP/1.1\r\nHost: alb.test.hayashier.com\r\n\r\n" | nc alb.test.hayashier.com 80

NLB

$ printf "GEET / HTTP/1.1\r\nHost: nlb.test.hayashier.com\r\n\r\n" | nc nlb.test.hayashier.com 80
HTTP/1.1 501 Method Not Implemented
Date: Mon, 29 Jan 2018 06:14:16 GMT
Server: Apache/2.2.34 (Amazon)
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 304
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>GEET to /index.html not supported.<br />
</p>
<hr>
<address>Apache/2.2.34 (Amazon) Server at nlb.test.hayashier.com Port 80</address>
</body></html>

printf “GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET / HTTP/1.1\r\nHost: clb.test.hayashier.com\r\n\r\n”

HTTPメソッドが128文字以上のとき

CLB

$ printf "GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET / HTTP/1.1\r\nHost: clb.test.hayashier.com\r\n\r\n" | nc clb.test.hayashier.com 80
HTTP/1.1 405 METHOD_NOT_ALLOWED
Content-Length: 0
Connection: Close

ALB

$ printf "GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET / HTTP/1.1\r\nHost: alb.test.hayashier.com\r\n\r\n" | nc alb.test.hayashier.com 80

NLB

$ printf "GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET / HTTP/1.1\r\nHost: nlb.test.hayashier.com\r\n\r\n" | nc nlb.test.hayashier.com 80
HTTP/1.1 501 Method Not Implemented
Date: Mon, 29 Jan 2018 06:15:53 GMT
Server: Apache/2.2.34 (Amazon)
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 1231
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET to /index.html not supported.<br />
</p>
<hr>
<address>Apache/2.2.34 (Amazon) Server at nlb.test.hayashier.com Port 80</address>
</body></html>

“GET / HTTP/1.2\r\nHost: clb.test.hayashier.com\r\n\r\n”

存在しないHTTPバージョン指定時

CLB

$ printf "GET / HTTP/1.2\r\nHost: clb.test.hayashier.com\r\n\r\n" | nc clb.test.hayashier.com 80
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Date: Mon, 29 Jan 2018 06:17:10 GMT
ETag: "60725-2f-563c5202222f8"
Last-Modified: Sat, 27 Jan 2018 17:13:02 GMT
Server: Apache/2.2.34 (Amazon)
Content-Length: 47
Connection: Close

<html>
    <body>Hello, world2!</body>
</html>

ALB

$ printf "GET / HTTP/1.2\r\nHost: alb.test.hayashier.com\r\n\r\n" | nc alb.test.hayashier.com 80

NLB

$ printf "GET / HTTP/1.2\r\nHost: nlb.test.hayashier.com\r\n\r\n" | nc nlb.test.hayashier.com 80
HTTP/1.1 200 OK
Date: Mon, 29 Jan 2018 06:17:34 GMT
Server: Apache/2.2.34 (Amazon)
Last-Modified: Sat, 27 Jan 2018 15:23:55 GMT
ETag: "606ee-2f-563c399ec5b72"
Accept-Ranges: bytes
Content-Length: 47
Connection: close
Content-Type: text/html; charset=UTF-8

<html>
    <body>Hello, world1!</body>
</html>

printf “GET / HOGE\r\nHost: clb.test.hayashier.com\r\n\r\n” | nc clb.test.hayashier.com 80

存在しないプロトコル指定時

CLB

$ printf "GET / HOGE\r\nHost: clb.test.hayashier.com\r\n\r\n" | nc clb.test.hayashier.com 80
HTTP/1.1 400 BAD_REQUEST
Content-Length: 0
Connection: Close

ALB

$ printf "GET / HOGE\r\nHost: alb.test.hayashier.com\r\n\r\n" | nc alb.test.hayashier.com 80
HTTP/1.1 400 Bad Request
Server: awselb/2.0
Date: Mon, 29 Jan 2018 06:31:35 GMT
Content-Type: text/html
Content-Length: 138
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
</body>
</html>

NLB

$ printf "GET / HOGE\r\nHost: nlb.test.hayashier.com\r\n\r\n" | nc nlb.test.hayashier.com 80
HTTP/1.1 400 Bad Request
Date: Mon, 29 Jan 2018 06:31:46 GMT
Server: Apache/2.2.34 (Amazon)
Content-Length: 335
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.34 (Amazon) Server at ip-172-31-17-170.us-west-2.compute.internal Port 80</address>
</body></html>

printf “GET / HTTP/1.1\r\n\r\n” | nc nlb.test.hayashier.com 80

HTTP/1.1でHostヘッダー未指定時

CLB

$ printf "GET / HTTP/1.1\r\n\r\n" | nc clb.test.hayashier.com 80
HTTP/1.1 400 BAD_REQUEST
Content-Length: 0
Connection: Close

ALB

$ printf "GET / HTTP/1.1\r\n\r\n" | nc alb.test.hayashier.com 80
HTTP/1.1 400 Bad Request
Server: awselb/2.0
Date: Mon, 29 Jan 2018 12:51:06 GMT
Content-Type: text/html
Content-Length: 138
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
</body>
</html>

NLB

$ printf "GET / HTTP/1.1\r\n\r\n" | nc nlb.test.hayashier.com 80
HTTP/1.1 400 Bad Request
Date: Mon, 29 Jan 2018 12:51:11 GMT
Server: Apache/2.2.34 (Amazon)
Content-Length: 335
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.34 (Amazon) Server at ip-172-31-17-170.us-west-2.compute.internal Port 80</address>
</body></html>

printf “GET / HTTP/1.0\r\n\r\n” | nc clb.test.hayashier.com 80

HTTP/1.0でHostヘッダー未指定時

CLB

$ printf "GET / HTTP/1.0\r\n\r\n" | nc clb.test.hayashier.com 80
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Date: Mon, 29 Jan 2018 12:49:35 GMT
ETag: "60725-2f-563c5202222f8"
Last-Modified: Sat, 27 Jan 2018 17:13:02 GMT
Server: Apache/2.2.34 (Amazon)
Content-Length: 47
Connection: Close

<html>
    <body>Hello, world2!</body>
</html>

ALB

$ printf "GET / HTTP/1.0\r\n\r\n" | nc alb.test.hayashier.com 80

NLB

$ printf "GET / HTTP/1.0\r\n\r\n" | nc nlb.test.hayashier.com 80
HTTP/1.1 200 OK
Date: Mon, 29 Jan 2018 12:50:04 GMT
Server: Apache/2.2.34 (Amazon)
Last-Modified: Sat, 27 Jan 2018 17:13:02 GMT
ETag: "60725-2f-563c5202222f8"
Accept-Ranges: bytes
Content-Length: 47
Connection: close
Content-Type: text/html; charset=UTF-8

<html>
    <body>Hello, world2!</body>
</html>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です