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 
관련된 설정 문서

docker 이미지 사용

docker 이미지를 이용하여 컴파일 과정없이 http2 지원 nginx 사용이 가능하다.

docker run -ti -v $PWD:/usr/share/nginx/html -p 80:80 -p 443:443 stephenyu/nginx-http2-ssl