Nginx Gzip 압축 설정 방법: 웹페이지 전송 크기를 줄이는 실전 방법
웹사이트의 속도를 높이는 방법 중 하나가 Gzip 압축입니다. 사용자가 웹페이지를 요청하면 서버는 HTML, CSS, JavaScript와 같은 파일을 전송합니다. 이때 파일을 압축해서 보내면 네트워크를 통해 전달되는 데이터의 크기를 줄일 수 있어 페이지 로딩 속도 개선에 도움이 됩니다.
특히 Nginx를 웹 서버로 사용하는 환경에서는 비교적 간단한 설정만으로 Gzip 압축을 적용할 수 있습니다. 이번 글에서는 Nginx Gzip의 원리부터 실제 설정 방법과 확인 방법까지 단계별로 알아보겠습니다.
1. Nginx Gzip 압축이란?

Gzip은 텍스트 기반 데이터를 압축하는 대표적인 방식입니다.
예를 들어 웹페이지에서 사용하는 HTML 파일의 크기가 100KB라고 가정해 보겠습니다. Gzip 압축을 적용하면 실제 네트워크를 통해 전송되는 데이터의 크기가 상당히 줄어들 수 있습니다.
일반적인 동작 과정은 다음과 같습니다.
사용자 브라우저 → Nginx 서버 → 파일 압축 → 압축 데이터 전송 → 브라우저에서 압축 해제
브라우저가 Gzip을 지원한다는 정보를 서버에 전달하면 Nginx는 조건에 따라 압축된 콘텐츠를 전송합니다.
2. Gzip 압축이 필요한 이유
웹페이지의 파일 크기가 커지면 사용자가 다운로드해야 하는 데이터도 증가합니다. 특히 모바일 환경이나 네트워크 속도가 느린 환경에서는 이러한 차이가 더욱 크게 나타날 수 있습니다.
Gzip 압축을 적용하면 다음과 같은 장점이 있습니다.
- HTML 파일 전송량 감소
- CSS 파일 전송량 감소
- JavaScript 파일 전송량 감소
- 네트워크 대역폭 절약
- 페이지 로딩 속도 개선에 도움
- 서버와 브라우저 사이의 데이터 전송 효율 향상
다만 Gzip은 모든 파일을 무조건 압축하는 것이 좋은 것은 아닙니다. JPEG, PNG, WebP와 같은 이미지 파일은 이미 압축된 경우가 많기 때문에 일반적으로 Gzip 대상으로 지정할 필요가 없습니다.
3. Nginx Gzip 기본 설정
Nginx의 설정 파일에서 Gzip 관련 옵션을 활성화할 수 있습니다.
일반적으로 /etc/nginx/nginx.conf와 같은 Nginx 설정 파일을 확인합니다.
기본적인 설정 예시는 다음과 같습니다.
http {
gzip on;
gzip_comp_level 5;
gzip_min_length 1000;
gzip_vary on;
gzip_types
text/plain
text/css
text/xml
application/json
application/javascript
application/xml
application/xml+rss
image/svg+xml;
}
설정에서 가장 중요한 부분은 gzip on;입니다.
이 옵션을 활성화하면 Nginx에서 Gzip 압축 기능을 사용할 수 있습니다.
4. gzip_comp_level 설정하기
gzip_comp_level은 압축 수준을 결정합니다.
일반적으로 값은 1부터 9까지 사용할 수 있으며 숫자가 높아질수록 압축률은 높아질 수 있지만 CPU 사용량도 증가할 수 있습니다.
예를 들어 다음과 같이 설정할 수 있습니다.
gzip_comp_level 5;
무조건 가장 높은 값인 9를 사용하는 것보다 서버의 CPU 성능과 트래픽을 고려해 적절한 값을 선택하는 것이 좋습니다.
웹 서버에서는 압축률과 CPU 사용량 사이의 균형이 중요하기 때문에 중간 수준의 값을 사용하는 방법도 많이 고려할 수 있습니다.
5. gzip_min_length 설정
gzip_min_length는 일정 크기보다 작은 응답을 압축하지 않도록 설정하는 옵션입니다.
예를 들어 다음과 같이 설정할 수 있습니다.
gzip_min_length 1000;
이 경우 작은 응답까지 무조건 압축하는 데 발생할 수 있는 불필요한 처리 비용을 줄이는 데 도움이 됩니다.
압축 자체에도 CPU 작업이 필요하기 때문에 아주 작은 파일은 압축으로 얻는 이점이 크지 않을 수 있습니다.
6. gzip_types로 압축 대상 지정하기
gzip_types에서는 Gzip 압축을 적용할 MIME 타입을 지정할 수 있습니다.
예를 들어 HTML, CSS, JavaScript, JSON 등의 텍스트 기반 콘텐츠를 대상으로 설정할 수 있습니다.
gzip_types
text/plain
text/css
text/xml
application/json
application/javascript
application/xml
application/xml+rss
image/svg+xml;
여기서 중요한 점은 파일의 확장자가 아니라 Content-Type 또는 MIME 타입을 기준으로 압축이 적용된다는 것입니다.
따라서 실제 서버 환경에서 전송되는 콘텐츠의 MIME 타입을 확인하는 것이 좋습니다.
7. gzip_vary 설정
다음 옵션도 함께 사용하는 것을 권장할 수 있습니다.
gzip_vary on;
이 설정은 HTTP 응답의 Vary: Accept-Encoding 헤더와 관련이 있습니다.
브라우저나 중간 캐시 서버가 압축된 응답과 압축되지 않은 응답을 적절하게 구분하는 데 도움을 줍니다.
8. Nginx 설정 적용하기
설정을 변경했다면 바로 서버를 재시작하기 전에 설정 문법을 먼저 확인하는 것이 좋습니다.
다음 명령어를 사용할 수 있습니다.
sudo nginx -t
문법에 문제가 없다면 다음과 같은 메시지를 확인할 수 있습니다.
syntax is ok
test is successful
그다음 Nginx 설정을 다시 적용합니다.
sudo systemctl reload nginx
reload를 사용하면 설정을 다시 읽도록 할 수 있어 서비스 중단을 최소화하면서 변경 사항을 적용할 수 있습니다.
9. Gzip 압축이 적용됐는지 확인하는 방법
설정을 적용했다고 해서 반드시 원하는 콘텐츠에 압축이 적용되는 것은 아닙니다.
브라우저의 개발자 도구를 이용하면 실제 네트워크 요청을 확인할 수 있습니다.
Chrome 기준으로는 다음 순서로 확인할 수 있습니다.
F12 → Network → 웹페이지 새로고침 → 요청 선택 → Response Headers 확인
응답 헤더에서 다음과 같은 항목이 있는지 확인할 수 있습니다.
Content-Encoding: gzip
이 값이 표시된다면 해당 응답에 Gzip 압축이 적용된 것입니다.
또한 요청 헤더의 Accept-Encoding 항목을 통해 브라우저가 지원하는 압축 방식을 확인할 수도 있습니다.
10. Gzip 설정 시 주의할 점
Gzip 압축은 웹 성능 개선에 도움이 될 수 있지만 모든 콘텐츠에 적용하는 것은 적절하지 않습니다.
특히 JPEG, PNG, GIF, WebP 같은 이미지 파일은 이미 압축된 형식이기 때문에 Gzip을 추가로 적용해도 큰 효과를 기대하기 어렵습니다.
또한 압축 수준을 지나치게 높이면 파일 크기는 조금 더 줄어들 수 있지만 서버 CPU 사용량이 증가할 수 있습니다.
따라서 다음 요소를 함께 고려해야 합니다.
- 서버 CPU 성능
- 웹사이트 트래픽
- 파일 크기
- 콘텐츠 종류
- 모바일 접속 환경
- 캐시 사용 여부
11. Nginx Gzip 설정 예시
실제 웹 서버에서 시작점으로 사용할 수 있는 간단한 예시는 다음과 같습니다.
gzip on;
gzip_comp_level 5;
gzip_min_length 1000;
gzip_vary on;
gzip_types
text/plain
text/css
text/xml
application/json
application/javascript
application/xml
application/xml+rss
image/svg+xml;
설정을 적용한 뒤에는 반드시 다음 명령으로 문법을 검사합니다.
sudo nginx -t
문법 검사가 정상적으로 완료되었다면 다음 명령으로 설정을 적용할 수 있습니다.
sudo systemctl reload nginx
마무리
Nginx Gzip 압축은 웹페이지에서 전송되는 텍스트 기반 데이터의 크기를 줄여 네트워크 사용량을 낮추고 페이지 성능을 개선하는 데 활용할 수 있는 기본적인 웹 서버 설정입니다.
핵심은 단순히 Gzip을 활성화하는 것보다 적절한 압축 수준과 대상 MIME 타입을 설정하고 실제 응답에 압축이 적용됐는지 확인하는 것입니다.
특히 HTML, CSS, JavaScript, JSON처럼 텍스트 기반 콘텐츠가 많은 웹사이트라면 Gzip 설정을 통해 전송 효율을 높이는 방법을 고려할 수 있습니다.
웹사이트 성능을 개선할 때는 Gzip 하나만 적용하기보다는 브라우저 캐시, 파일 최적화, 이미지 최적화, CDN 등의 방법을 함께 검토하는 것이 좋습니다.