nginx로 http2 적용하기
nginx에 http2 프로토콜 적용하는 방법을 정리한다.
nginx 컴파일
다운로드
http2 적용을 위해서는 nginx-1.9.5
이상이 필요하다. 최신버전을 다운로드 받고 tar 압축을 풀도록 한다. (작성 시점에는 1.17.6
)
$ wget http://nginx.org/download/nginx-1.17.6.tar.gz
--2019-12-20 13:09:11-- http://nginx.org/download/nginx-1.17.6.tar.gz
Resolving nginx.org (nginx.org)...
......
100%[=============================================================================================================================================================>] 1,037,527 534KB/s in 1.9s
2019-12-20 13:09:14 (534 KB/s) - ‘nginx-1.17.6.tar.gz’ saved [1037527/1037527]
$ ls
nginx-1.17.6.tar.gz
$ tar xzf nginx-1.17.6.tar.gz
$ ls
nginx-1.17.6 nginx-1.17.6.tar.gz
컴파일
아래의 두가지 옵션을 추가 하여 configure
, make
, make install
을 수행한다.
$ NGINX_DEST=/target/directory
$ ./configure \
--prefix=$NGINX_DEST \
--with-http_ssl_module \
--with-http_v2_module
$ make -j
$ make install
설정 및 실행
http2 및 ssl 설정을 하고 nginx를 실행한다. http2를 사용하려면 https(ssl/tls)도 함께 켜줘야 한다. (ALPN에서 http2를 쓰겠다고 합의를 봐야함)
# conf/nginx.conf
server {
listen 443 ssl http2; # ssl(http2)와 http2를 443포트에 적용
ssl_certificate server.crt; # ssl 인증서
ssl_certificate_key server.key; # ssl 인증서 키
}
$ cd $NGINX_DEST
$ sbin/nginx
관련된 설정 문서
- 기본설정(core) : http://nginx.org/en/docs/http/ngx_http_core_module.html
- ssl : http://nginx.org/en/docs/http/ngx_http_ssl_module.html
- http2 : http://nginx.org/en/docs/http/ngx_http_v2_module.html
docker 이미지 사용
docker 이미지를 이용하여 컴파일 과정없이 http2 지원 nginx 사용이 가능하다.
docker run -ti -v $PWD:/usr/share/nginx/html -p 80:80 -p 443:443 stephenyu/nginx-http2-ssl