ngx_http_gzip_module
ngx_http_gzip_module 모듈은 “gzip” 메서드를 사용하여 응답을 압축하는 필터입니다. 전송된 데이터 용량을 절반 이상 줄이는 데 도움이 되는 경우가 많습니다.
SSL/TLS 프로토콜을 사용할 경우, 압축된 응답은 보안 침해 공격의 표적이 될 수 있습니다.
예제 구성
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml;
$gzip_ratio 변수를 사용하여 만족된 압축 비율을 로깅할 수 있습니다.
Directives
Syntax: gzip on | off;
Default: gzip off;
Context: http, server, location, if in location
응답의 gzip 압축을 활성화하거나 비활성화합니다.
Syntax: gzip_buffers number size;
Default: gzip_buffers 32 4k|16 8k;
Context: http, server, location
응답을 압축하는 데 사용하는 버퍼의 number와 size를 설정합니다. 기본적으로 버퍼 크기는 메모리 페이지 1개와 같고, 이는 플랫폼에 따라 4K 또는 8K가 됩니다.
0.7.28버전까지 기본적으로 4K 또는 8K 버퍼 4개를 사용합니다.
Syntax: gzip_comp_level level;
Default: gzip_comp_level 1;
Context: http, server, location
응답의 gzip 압축 level을 설정합니다. 허용되는 값은 1~9 범위입니다.
Syntax: gzip_disable regex ...;
Default: —
Context: http, server, location
This directive appeared in version 0.6.23.
지정된 정규식과 일치하는 “User-Agent” 헤더 필드가 포함된 요청에 대한 응답의 gzip 압축을 비활성화합니다.
특수 마스크 “msie6″(0.7.12)는 정규식 “MSIE [4-6]\.”와 상응하지만, 속도가 더 빠릅니다. 0.8.11버전부터 “MSIE 6.0; … SV1″이 이 마스크에서 제외됩니다.
Syntax: gzip_http_version 1.0 | 1.1;
Default: gzip_http_version 1.1;
Context: http, server, location
응답을 압축하는 데 필요한 최소 HTTP 버전을 설정합니다.
Syntax: gzip_min_length length;
Default: gzip_min_length 20;
Context: http, server, location
gzip으로 압축할 응답의 최소 길이를 설정합니다. 길이는 “Content-Length” 응답 헤더 필드에서만 결정됩니다.
Syntax: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth |
any ...;
Default: gzip_proxied off;
Context: http, server, location
요청과 응답에 따라 프록시된 요청에 대한 응답의 gzip 압축을 활성화하거나 비활성화합니다 요청이 프록시되었는지는 “Via” 요청 헤더 필드가 있는지에 따라 확인합니다. 이 명령은 여러 가지 매개변수를 받습니다.
off
모든 프록시된 요청의 압축을 비활성화하고, 다른 매개변수를 무시합니다.
expired
응답 헤더에 캐싱을 비활성화하는 값이 있는 “Expires” 필드가 포함되면 압축을 활성화합니다.
no-cache
응답 헤더에 “no-cache” 매개변수가 있는 “Cache-Control” 필드가 포함되면 압축을 활성화합니다.
no-store
응답 헤더에 “no-store” 매개변수가 있는 “Cache-Control” 필드가 포함되면 압축을 활성화합니다.
private
응답 헤더에 “private” 매개변수가 있는 “Cache-Control” 필드가 포함되면 압축을 활성화합니다.
no_last_modified
응답 헤더에 “Last-Modified” 필드가 포함되지 않으면 압축을 활성화합니다.
no_etag
응답 헤더에 “ETag” 필드가 포함되지 않으면 압축을 활성화합니다.
auth
요청 헤더에 “Authorization” 필드가 포함되면 압축을 활성화합니다.
any
모든 프록시된 요청에 압축을 활성화합니다.
Syntax: gzip_types mime-type ...;
Default: gzip_types text/html;
Context: http, server, location
“text/html” 외에 지정된 MIME 유형에 대한 응답에 gzip 압축을 활성화합니다. 특수 값 “*”은 모든 MIME 유형과 일치합니다(0.8.29). “text/html” 유형의 응답은 항상 압축됩니다.
Syntax: gzip_vary on | off;
Default: gzip_vary off;
Context: http, server, location
gzip, gzip_static 또는 gunzip 명령이 활성화된 경우 “Vary: Accept-Encoding” 응답 헤더 필드 삽입을 활성화하거나 비활성화합니다.
임베디드 변수
$gzip_ratio
원본과 압축된 응답 용량 사이의 비율로 계산하여 달성된 압축 비율입니다.