17.13. HTTP/2 구성

Undertow를 사용하면 HTTP/2 표준을 사용할 수 있으므로, 동일한 TCP 연결을 통해 헤더를 압축하고 많은 스트림을 멀티플렉싱하여 대기 시간을 줄일 수 있습니다. 또한 서버가 요청을 받기 전에 클라이언트에 리소스를 내보내면 페이지 로드 속도가 빨라집니다.

HTTP/2는 HTTP/2 표준도 지원하는 클라이언트 및 브라우저에서만 작동합니다.

중요

대부분의 최신 브라우저는 h2라는 보안 TLS 연결에 HTTP/2를 적용하며, h2 c 라고 하는 일반 HTTP에서 HTTP/2를 지원하지 않을 수 있습니다. HTTPS를 사용하지 않고 HTTP 업그레이드를 사용하는 일반 HTTP만 사용하지 않고 h2c 에서 HTTP/2를 사용하도록 JBoss EAP를 구성할 수 있습니다. 이 경우 HTTP 리스너 Undertow에서 HTTP/2를 활성화할 수 있습니다.

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=enable-http2,value=true)

HTTP/2를 사용하도록 Undertow를 구성하려면 enable-http2 특성을 true 로 설정하여 Undertow에서 HTTPS 리스너가 HTTP/2를 사용하도록 설정합니다.

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=true)

웹 애플리케이션에 HTTPS 리스너를 사용하도록 HTTPS 리스너 및 Undertow 구성에 대한 자세한 내용은 How to Configure One-way and Two-way SSL/TLS for Applications 를 참조하십시오.

참고

elytron 하위 시스템과 함께 HTTP/2를 사용하려면 Undertow의 https-listener 에 구성된 ssl-context 가 수정 가능으로 구성되어 있는지 확인해야 합니다. 이는 적절한 server-ssl-contextwrap 속성을 false로 설정하여 수행할 수 있습니다. 기본적으로 wrap 특성은 false 로 설정됩니다. Undertow는 ALPN에 관한 ssl-context 에서 수정하는 데 필요합니다. 제공된 ssl-context 에 쓸 수 없는 경우 ALPN을 사용할 수 없으며 연결이 HTTP/1.1로 대체됩니다.

HTTP/2 사용 시 ALPN 지원

보안 TLS 연결에서 HTTP/2를 사용하는 경우 ALPN TLS 프로토콜 확장을 지원하는 TLS 스택이 필요합니다. 이 스택을 가져오는 것은 설치된 JDK에 따라 다릅니다.

  • Java 8을 사용하는 경우 ALPN 구현은 Java 내부의 종속성과 함께 JBoss EAP에 직접 도입됩니다. 따라서 이 ALPN 구현은 Oracle 및 OpenJDK에서만 작동합니다. IBM Java에서는 작동하지 않습니다. Red Hat은 ALPN 기능을 구현하는 OpenSSL 라이브러리를 사용하여 JBoss EAP의 OpenSSL 공급자로부터 ALPN TLS 프로토콜 확장 지원을 활용할 것을 강력히 권장합니다. OpenSSL 공급자의 ALPN TLS 프로토콜 확장 지원을 사용하면 성능이 향상되어야 합니다.
  • Java 9부터 JDK는 기본적으로 ALPN을 지원합니다. 그러나 OpenSSL 공급자의 ALPN TLS 프로토콜 확장 지원을 사용하면 Java 9 이상을 사용할 때 성능이 향상되어야 합니다.

ALPN TLS 프로토콜 확장 지원을 받기 위해 OpenSSL을 설치하는 방법은 JBoss Core Services에서 Install OpenSSL에서 확인할 수 있습니다. 표준 시스템 OpenSSL은 Red Hat Enterprise Linux 8에서 지원되며 추가 JBoss Core Services OpenSSL은 필요하지 않습니다.

OpenSSL이 설치되면 Configure JBoss EAP to use OpenSSL 의 지침을 따르십시오.

HTTP/2가 사용 중인지 확인

Undertow가 HTTP/2를 사용하는지 확인하려면 Undertow에서 들어오는 헤더를 검사해야 합니다. https(예: https://localhost:8443) 를 사용하여 JBoss EAP 인스턴스로 이동하고 브라우저의 개발자 도구를 사용하여 헤더를 검사합니다. 일부 브라우저(예: Google Chrome)는 HTTP/2를 사용할 때 :path, : authority, : method 및 : scheme 와 같은 HTTP/2 의사 헤더를 표시합니다. 기타 브라우저(예: Firefox 및 Safari)는 헤더의 상태 또는 버전을 HTTP/2.0 으로 보고합니다.