우선 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
# 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:
댓글 쓰기