Nginx와 gzip에 대해 대한 깊이 있게 알고 있지 않지만, 짧게나마 찾아보고 해본 것들을 정리해 보려 합니다.
환경은 Ubuntu v16.04.1
, Nginx v1.10.0
으로 디렉토리 경로나 예제는 버전에 따라 상이할 수 있습니다.
$ sudo apt-get install nginx
http {
server {
location {
}
}
}
크게 구조는 위와 같습니다.
$ vi /etc/nginx/nginx.conf
위의 파일이 nginx의 기본 설정입니다. 로그 파일 경로를 설정하거나 gzip 설정등.. 몇가지가 보입니다.
http {
...
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf
include /etc/nginx/sites-enabled/*
}
가상 호스트 서버 관한 설정은 /etc/nginx/sites-enabled/
디렉토리 안에 파일들을 인클루드해서 구성하는게 기본 설정입니다.
우선 기본적으로 설정되어 있는 값(/etc/nginx/sites-enabled/default
)을 확인해 보면 아래와 같습니다.
기본적으로 주석으로 잘 설명이 되어있습니다.
$ vi ./etc/nginx/sites-enabled/default
server {
listen 80 default_server;
listen [::]:80 default_server;
# 기본적으로 포트 값이 없다면 80포트를 기본으로 합니다.
root /var/www/html;
# 기본 루트 디렉토리 입니다.
index index.html index.htm index.nginx-debian.html;
# 기본 루트 디렉토리에서 가장 먼처 찾는 첫번째 파일입니다.
server_name _;
location / {
try_files $uri $uri/ =404;
# 요청한 파일로 시도한 후 없다면 404를 띄웁니다.
}
}
별도로 어플리케이션 서버(node, flask, ...)를 구축하지 않고 정적인 페이지를 추가해보자면 아래와 같습니다.
$ vi /etc/nginx/site-enabled/falsy
적당한 이름(ex. falsy)
으로 파일을 만들고
server {
listen 8080;
server_name 123.123.123.123;
root /usr/share/nginx/html;
index index.html;
}
설정을 추가한 후 저장.
$ service nginx restart
엔젠엑스 재시작
이제 http://123.123.123.123/
은 /var/www/html/index.html
를 가리키고 http://123.123.123.123:8080/
은 /usr/share/nginx/html/index.html
을 가리키게 됩니다.
역시 잘 모르지만..
gzip 설정은 앞서 이야기한 nginx 의 http{ }
과 server { }
에서 설정할 수 있습니다.
$ vi /etc/nginx/nginx.conf
아래는 nginx 설정파일의 기본 값입니다. 기본적으로 gzip은 on 으로 설정되어 있습니다.
http {
...
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
gzip on | off(기본값 off)
gzip 설정을 켜고 끕니다.
gzip_buffers 32 4k | 16 8k
압축을 사용하는 버퍼의 수와 크기 입니다.
gzip_comp_level 1 to 9(기본값 1)
압축 레벨을 설정합니다 1~9 까지를 사용할 수 있으며 값이 높아질 수록 압축률이 좋아지지만 CPU의 부담이 커집니다.
gzip_disable regex(정규표현식)
Request header의 'User-Agent' 필드에 설정한 정규표현식에 일치하는 경우 비활성화 합니다.
기본값으로 있는 msie6
는 MSIE [4-6]\.
과 일치하지만 더 빠릅니다. (Nginx v0.7.12에서 추가된듯..)
gzip_min_length number(기본값 20)
gzip을 사용할 응답의 최소 길이를 설정합니다.
gzip_http_version 1.0 | 1.1(기본값 1.1)
응답 압축에 필요한 최소의 http 버전
gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...; (기본값 off)
Request header의 'Via' 필드에 의해 활성화 비활성화 할 수 있습니다. (여러 매개 변수를 허용할 수 있습니다)
자세한 정보는 문서 하단에 첨부 링크 참조
gzip_types mime-type ...;(디폴트 text/html)
gzip 압축을 할 mime 타입을 설정합니다.
"*"는 모든 MIME 유형을 포함합니다.(Nginx v0.8.29에서 추가된듯..)
text/html
유형은 항상 압축됩니다.
gzip_vary on | off(디폴트 off)
gzip이 활성화 된 경우 Response header에 'Vary : Accept-Encoding'을 삽입합니다.
위 정보는 Nginx 웹사이트를 참고하였습니다.