Skip to content

Instantly share code, notes, and snippets.

@falsy
Last active December 11, 2017 07:04
Show Gist options
  • Save falsy/758a0c04322b45508fed600911719eed to your computer and use it in GitHub Desktop.
Save falsy/758a0c04322b45508fed600911719eed to your computer and use it in GitHub Desktop.
Nginx의 가상호스트 설정과 gzip 모듈의 구성

Nginx의 가상 호스트 설정과 gzip 모듈

Nginx와 gzip에 대해 대한 깊이 있게 알고 있지 않지만, 짧게나마 찾아보고 해본 것들을 정리해 보려 합니다.

1. Nginx

환경은 Ubuntu v16.04.1, Nginx v1.10.0 으로 디렉토리 경로나 예제는 버전에 따라 상이할 수 있습니다.

Nginx 설치

$ 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을 가리키게 됩니다.

2. gzip

역시 잘 모르지만..

nginx 설정

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 구성

gzip

gzip on | off(기본값 off)

gzip 설정을 켜고 끕니다.

gzip_buffers

gzip_buffers 32 4k | 16 8k

압축을 사용하는 버퍼의 수와 크기 입니다.

gzip_comp_level

gzip_comp_level 1 to 9(기본값 1)

압축 레벨을 설정합니다 1~9 까지를 사용할 수 있으며 값이 높아질 수록 압축률이 좋아지지만 CPU의 부담이 커집니다.

gzip_disable

gzip_disable regex(정규표현식)

Request header의 'User-Agent' 필드에 설정한 정규표현식에 일치하는 경우 비활성화 합니다. 기본값으로 있는 msie6MSIE [4-6]\.과 일치하지만 더 빠릅니다. (Nginx v0.7.12에서 추가된듯..)

gzip_min_length

gzip_min_length number(기본값 20)

gzip을 사용할 응답의 최소 길이를 설정합니다.

gzip_http_version

gzip_http_version 1.0 | 1.1(기본값 1.1)

응답 압축에 필요한 최소의 http 버전

gzip_proxied

gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...; (기본값 off)

Request header의 'Via' 필드에 의해 활성화 비활성화 할 수 있습니다. (여러 매개 변수를 허용할 수 있습니다)

자세한 정보는 문서 하단에 첨부 링크 참조

gzip_types

gzip_types mime-type ...;(디폴트 text/html)

gzip 압축을 할 mime 타입을 설정합니다.
"*"는 모든 MIME 유형을 포함합니다.(Nginx v0.8.29에서 추가된듯..)
text/html 유형은 항상 압축됩니다.

gzip_vary

gzip_vary on | off(디폴트 off)

gzip이 활성화 된 경우 Response header에 'Vary : Accept-Encoding'을 삽입합니다.

마무리

위 정보는 Nginx 웹사이트를 참고하였습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment