웹 사이트 성능 향상 NGINX gzip 텍스트 압축 설정

웹 사이트 성능 향상 NGINX gzip 텍스트 압축 설정해보겠습니다.

지난 포스팅에서 Lighthouse를 이용하여 성능 진단에 대해 알아보았습니다. 현재 개발 개편중인 사이트 점검을 진행했습니다. 개편 서버에서는 Nginx gizp 설정이 제대로 되어 있지 않았습니다. 텍스트 압축 개선이 필요하다고 생각되어 NGINX에 설정해보았습니다.

gzip

Gzip 압축은 웹 페이지와 자산(스타일시트 및 스크립트 등)을 클라이언트에 보내기 전에 압축하기 위해 웹 서버에서 널리 사용됩니다. 이를 통해 웹 페이지의 크기를 줄이고 전송 시간을 단축할 수 있습니다. gzip은 네트워크 대역폭을 효율적으로 사용하고, 사용자의 웹 페이지 로딩 속도를 향상시키는 데 도움이 됩니다.

웹 사이트 성능 향상 Nginx 설정

nginx.conf 파일을 설정해보겠습니다.

gzip on;
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

gzip on;

텍스트 압축을 사용합니다.

gzip_vary on;

Accept-Encoding 헤더를 추가합니다. 이는 프록시에게 컨텐츠가 인코딩에 따라 달라짐을 알리며, 지원하지 않는 클라이언트에게 압축된 컨텐츠를 제공하는 것을 방지합니다.

gzip_buffers 16 8k;

압축에 사용되는 버퍼의 크기를 설정합니다. 두 숫자로 정의되며, 첫 번째 숫자는 메모리 버퍼의 개수, 두 번째 숫자는 각 버퍼의 크기를 나타냅니다.

메모리 버퍼의 개수: 16
각 버퍼의 크기: 8 킬로바이트(KB)
이것은 Nginx가 16개의 메모리 조각을 사용하며 각각은 8KB의 크기를 가진 버퍼를 사용하여 압축된 데이터를 버퍼링합니다. 버퍼링에 할당된 총 메모리 양은 number_of_buffers * size_of_buffer로 계산되며 이 경우에는 16 * 8KB = 128KB가 됩니다.

 큰 버퍼는 압축 비율을 향상시킬 수 있지만 더 많은 메모리를 사용합니다. 서버에 따라 균형을 조절해야합니다.

gzip_comp_level

1에서 9까지의 압축 레벨을 설정합니다. 1은 가장 빠르지만 압축률이 낮고, 9는 가장 압축률이 높지만 느립니다.

gzip_types

압축을 적용할 MIME 타입을 지정합니다. 주로 텍스트 기반 포맷 및 JavaScript, JSON, XML과 같은 자주 사용되는 형식들이 포함됩니다.

위 설정을 통해 웹 사이트 성능을 최적화하고, 효율적인 압축 전송을 통해 웹 서버의 응답 속도를 향상시켰습니다.

설정 전/후 비교

웹사이트성능향상-gzip설정비교

설정 전에는 230KB였고 설정 후에는 94.8 KB로 변경 되었습니다.

웹 사이트 성능 향상을 위해 Lighthouse를 적극적으로 사용하여 서비스를 개선해보세요.

지난 포스팅의 웹 사이트 성능 측정 도구 Lighthouse 사용을 참고해주세요.

Leave a Comment