# ELB(CLB,ALB,NLB)の種類ごとのHTTPレスポンスの違い

## ELB(CLB,ALB,NLB)の種類ごとのHTTPレスポンスの違い

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


<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

存在しない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


<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


<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

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


<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

存在しない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


<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


<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>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hayashier.gitbook.io/article/load-balancer/clb-alb-nlb-response.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
