JUST WRITE

HTTP/2.0 적용 본문

Programing/Spring

HTTP/2.0 적용

천재보단범재 2022. 1. 11. 13:16

이번 글에서는 Spring Boot에서 HTTP/2.0 적용에 대해 정리해보려 한다.

HTTP/2.0은 HTTP/1.1에서 개선된 Protocol이다.

자세한 사항은 아래 글에서 확인 가능하다.

 

HTTP 1.1 vs HTTP 2.0

HTTP/1.1 HTTP는 1996년에 1.0 버전을 공식적으로 도입하였다.(RFC1945) 1997년에 1.1 버전을 공식적으로 출시하였다. 1.1 버전에 개선과 업데이트는 1999년에 출시하였다.(RFC2616) 개선이 되기는 하였지만 느

developnote-blog.tistory.com

Spring Boot HTTP/2.0 적용

Spring Boot에서는 설정값 하나로 HTTP/2.0 적용이 가능하다.

server.http2.enabled 값을 true로 변경해주면 된다.

application.yml이나 application.properties에서 변경해주면 된다.

<!-- application.yml에서 -->
server:
  http2:
    eabled: true

HTTP/2.0을 적용하려면 SSL 적용이 필수이다.

SSL 적용은 아래 글에서 확인 가능하다.

 

HTTP vs HTTPS

HTTP HyperText Transfer Protocol HyperText를 전송하기 위한 통신규약 Web Server와 Web Browser 사이에 데이터를 전송하기 위한 통신 규약 Default Port -> 80 HTTPS HyperText Transfer Protocol Secure HT..

developnote-blog.tistory.com

HTTP/2.0 with Tomcat

Spring Boot에서는 Embedded Web ServerTomcat, Jetty, Undertow 등이 있다.

<!-- pom.xml -->
<!-- 1. Default(Tomcat) -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 2. jetty -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<!-- Exclude the Tomcat dependency -->
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<!-- Use Jetty instead -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

기본인 Tomcat 기준으로 HTTP/2.0 적용을 살펴보려 한다.

Spring boot의 Embedded Tomcat기본적으로 Version 9.0.x을 제공한다.

Tomcat의 Vesion을 변경하려면 pom.xml에서 아래 property 값을 설정해주면 된다.

<properties>
        <tomcat.version>9.0.56</tomcat.version>
</properties>

Tomcat 9.0.x과 JDK 9 이상 Version에서는 HTTP/2.0 적용이 문제없이 가능하다.

대신 JDK 8에서는 추가적인 조치가 필요하다.

libtcnative Library 설치가 필요하다.(참고 링크)

libtcnative Library는 APR(Apache Portable Runtime)을 사용할 수 있게 해주는 Library이다.

설치 후 아래 JVM Argument를 추가해야 할 수도 있다.

-Djava.library.path=/usr/local/opt/tomcat-native/lib

JDK8에서 해당 Library 없이 HTTP/2.0을 사용하려고 하면 아래와 같은 Error가 발생한다.

ERROR 8787 --- [ main] o.a.coyote.http11.Http11NioProtocol : The upgrade handler [org.apache.coyote.http2.Http2Protocol] for [h2] only supports upgrade via ALPN but has been configured for the ["https-jsse-nio-8443"] connector that does not support ALPN.

HTTP/2.0 확인

준비가 되었으면 HTTP/2.0 작동 여부 확인이 필요하다.

curl를 통해 확인하려 한다.

Window Version는 아래 링크에서 다운로드 가능하다.

https://winampplugins.co.uk/curl/

curl에 몇 가지 옵션을 주어 확인이 가능하다.

Option Description
-I, --head   HTTP Header만 보여주고 Content는 안 보여 줌.
-k, --insecure   https Site를 SSL Certicate 검증 없이 연결
--http2   http2 통신하기 위한 Option

server.http2.enabled 옵션 false일 때

HTTP/2.0은 지원하지 않고, HTTP/1.1만 통신하는 것을 확인할 수 있다.

server.http2.enabled 옵션 true일 때

HTTP/2.0은 지원하는 것을 확인할 수 있다.

마지막으로 HTTP/2.0 지원은 Web Browser마다 다르니 아래 사진을 참고하길 바란다.

728x90
반응형

'Programing > Spring' 카테고리의 다른 글

Spring Boot Configuration with Jasypt  (0) 2022.01.13
@ControllerAdvice Exception 처리  (0) 2022.01.03
BeanFactory vs ApplicationContext  (0) 2021.12.21
Bean Annotations  (0) 2021.12.20
@Autowired  (0) 2021.10.22
Comments