15.9. undertow에서 HTTP/2 이해
Cryostat를 사용하면 HTTP/2 표준을 사용할 수 있으므로 헤더를 압축하고 동일한 TCP 연결을 통해 많은 스트림을 멀티플렉싱하여 대기 시간을 줄일 수 있습니다. 또한 서버가 리소스를 요청하기 전에 클라이언트에 리소스를 푸시하여 페이지 로드 속도가 빨라질 수 있는 기능도 제공합니다.
HTTP/2는 HTTP/2 표준을 지원하는 클라이언트 및 브라우저에서만 작동합니다.
대부분의 최신 브라우저는 h2c 라는 보안 TLS 연결을 통해 HTTP/2를 적용하며, 라는 일반 HTTP를 통해 HTTP/2를 지원하지 않을 수 있습니다. HTTPS를 사용하지 않고 HTTP 업그레이드와 함께 일반 HTTP만 사용하지 않고 h2 ch2c 와 함께 HTTP/2를 사용하도록 JBoss EAP를 구성할 수 있습니다. 이 경우 HTTP 리스너에서 HTTP/2를 간단히 활성화할 수 있습니다.
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=enable-http2,value=true)
15.9.1. Cryostat에서 HTTP/2 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 HTTPS 리스너를 구성하여 Cryostat에서 HTTP/2를 활성화하는 방법을 설명합니다.
사전 요구 사항
- 관리 CLI에 액세스할 수 있습니다.
- 서버 구성을 수정할 수 있는 권한이 있습니다.
프로세스
HTTPS 리스너에서 HTTP/2를 활성화합니다.
---- /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=true) ----서버를 다시 로드하여 변경 사항을 적용합니다.
---- reload ----
elytron 하위 시스템에서 HTTP/2를 사용하려면 Cryostat의 https-listener 에 구성된 ssl-context 가 수정 가능으로 구성되어 있는지 확인해야 합니다. 이를 위해 적절한 server-ssl-context 의 wrap 속성을 false 로 설정하면 됩니다. 기본적으로 wrap 속성은 false 로 설정됩니다. 이는 ALPN에 대한 ssl-context 를 수정하는 데 필요합니다. 제공된 ssl-context 를 쓸 수 없는 경우 ALPN을 사용할 수 없으며 연결은 HTTP/1.1으로 대체됩니다.
15.9.2. HTTP/2 사용 시 ALPN 지원 링크 복사링크가 클립보드에 복사되었습니다!
보안 TLS 연결을 통해 HTTP/2를 사용하는 경우 ALPN(Application-Layer Protocol Negotiation) TLS 프로토콜 확장을 지원하는 TLS 스택이 필요합니다. 이 스택을 얻는 것은 설치된 JDK에 따라 다릅니다.
- Java 9부터는 ALPN이 기본적으로 지원되지만 OpenSSL 공급자의 ALPN TLS 프로토콜 확장 기능을 사용하면 Java 9 이상을 사용할 때 성능이 향상됩니다.
ALPN TLS 프로토콜 확장 지원을 받기 위해 OpenSSL을 설치하는 방법은 JBoss Core Services에서 OpenSSL 설치에서 확인할 수 있습니다. 표준 시스템 OpenSSL은 Red Hat Enterprise Linux 8에서 지원되며 추가 OpenSSL은 필요하지 않습니다.
OpenSSL이 설치되면 xref:"configure-jboss-eap-to-use-openssl_configuring-the-web-server-undertow-jboss-eap"[JBoss EAP를 사용하도록 구성].
15.9.3. HTTP/2 사용 확인 링크 복사링크가 클립보드에 복사되었습니다!
Cryostat가 HTTP/2를 사용하고 있는지 확인하려면 Cryostat에서 들어오는 헤더를 검사해야 합니다. https를 사용하여 JBoss EAP 인스턴스로 이동하고(예 : https://localhost:8443) 브라우저의 개발자 툴을 사용하여 헤더를 검사합니다. 일부 브라우저(예: Google Chrome)는 HTTP/2를 사용할 때 :path,:authority,:method 및 :scheme 과 같은 HTTP/2 의사 헤더를 표시합니다. 다른 브라우저(예: Firefox 및 Safari)는 헤더의 상태 또는 버전을 HTTP/2.0 으로 보고합니다.