프로그래밍/AWS

ALB HTTP2 삽질기

모지사바하 2022. 3. 10. 11:15

ELB 에서 ALB 로 변경하면서 HTTP2 를 적용하는 중 이유를 알기 어려운 문제가 발생하여 기록하낟.

 

문제가 발생한 설정 내용:

ALB HTTP2 활성화 켬

대상그룹 프로토콜 버전 HTTP2 로 설정

NGINX listen http2 설정

 

증상:

대부분 잘되지만 일부 PC 에서 HTTP STATUS 464 오류가 발생함

일부 피씨에서만 발생하니 문제원인을 알기가 굉장히 까다로웠다.

 

해결을 위한 문제파악:

우선 ALB 엑세스 로그를 활성화한 후 로그를 확인해보았다.

액세스 로그를 확인해보니 대부분의 요청은 h2 HTTP/2.0 으로 호출이 되었으나,

464 오류가 발생한 요청은 https HTTP/1.1 로 요청을 하고 있었다.

 

AWS Forum 을 뒤져보다가 아래와 같은 글을 발견하였고 아래와 같은 답변 내용을 확인하였다.

"이것이 작동하도록 하기 위해 대상 그룹의 프로토콜을 http2에서 http1 및 http2로 변경했습니다. 그런 다음 작동했습니다."

https://forums.aws.amazon.com/thread.jspa?threadID=332847 

 

의문:

1. HTTP/1.1 로 요청하더라도 HTTP2.0 은 HTTP 1.1 을 호환하기 때문에 돼야하는데 왜 안될까?

> 대상그룹에서 프로토콜 버전을 HTTP2 로 강제 했기 때문에 오직 HTTP2 요청만 수용하는것일까?

 

2. 일부 피씨에서만 안되는 이유는 무엇일까?

> 해당 피씨 브라우저 설정을 따로 건드린건 아닐까? 혹시 프록시를 경유하고 있는가?

 

문제해결한 설정 내용:

ALB HTTP2 활성화 켬

대상그룹 프로토콜 버전 HTTP1 로 설정 

HTTP1 설정하는 부분 설명에 아래와 같은 내용이 기재돼있다.

(HTTP/1.1을 사용하여 대상에 요청을 보냅니다. 요청 프로토콜이 HTTP/1.1 또는 HTTP/2인 경우 지원됩니다.) 

NGINX listen http2 제거

 

 

결과:

위와 같이 설정하니 대부분의 피씨에서 h2 로 요청하였으며 HTTP STATUS 464 오류가 발생하던 피씨에서는 HTTP/1.1 로 요청하여 정상적인 응답을 받았다.

 

문제 해결을 하긴 하였지만, 뭔가.. 클리어하지는 않다.