nginx http2 brotli 사용하기

nginx 에서 http2 를 적용 후 기존 gzip 을 대체하는 brotli 를 압축을 사용할 수 있다.
우선 nginx 용으로 만들어진 모듈을 다운받는다.

# deps 디렉토리가 brotli (https://github.com/google/brotli) 를 바라보고 있어
# clone 시 --recursive 옵션을 사용하여 brotli 까지 모두 다운 받아야 한다.
git clone --recursive https://github.com/google/ngx_brotli

# nginx 빌드시 brotli 모듈을 추가해 빌드한다.
--add-module=/home/ysoftman/ngx_brotli

# nginx.conf 설정에서 brotli 사용
# MIME 설명
https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types
http {
    brotli on;  # on-the-fly 로 요청마다 brotli 압축
    brotli_static on;  # 미리 압축해논 .br 파일을 사용
    brotli_types *; # on-the-fly 때 압축할 MIME 타입 설정
}

# 크롬 브라우저는 https(http2) 요청시 brotli(br) 이 지원되어 다음과 같이 gzip 과 함께 br 을 명시한다.
accept-encoding:gzip, deflate, br

# nginx 는 https(http2) 의 요청에 대해서 다음과 같이 br 로 인코딩하여 응답한다.
content-encoding:br
content-type:text/html
date:Mon, 26 Jun 2017 06:03:57 GMT
etag:W/"5950a3c7-264"
last-modified:Mon, 26 Jun 2017 06:03:51 GMT
server:nginx
status:200

# 참고
# 이미 브라우저가 해당 리소스(ex. html 파일)를 가지고 있다면 캐쉬되어
# 304(not modified, 서버의 리소스가 클라가 캐시와 비교해 변경된것이 없다.)
# 응답을 주면 다음과 같이  "content-encoding:br" 명시될 필요가 없다.
date:Mon, 26 Jun 2017 06:19:00 GMT
etag:"59506b41-264"
last-modified:Mon, 26 Jun 2017 02:02:41 GMT
server:nginx
status:304

comments:

댓글 쓰기