본문 바로가기

71 Nginx 서버 성능 개선 - Google Brotli

71.1 응답헤더 확인하기 - Content-Encoding

웹사이트 속도가 점점 느려지고 있어서 크롬 개발자모드(F12) Lighthouse 보고서에서 나오는 문제를 확인하며 수정하고 있습니다.

Lighthouse에선 Gzip 보단 Brotli가 효율이 좋다고 권장하고 있습니다. Brotli는 현재 웹사이트의 속도개선을 위한 압축알고리즘으로 인기가 있는것 같습니다.

Nginx 설치시 기본으로 설치 되지 않았기 때문에 설치파일을 수동으로 받아 설치 해야합니다.

71.2 nginx, brotli 설치 준비

우선 nginx 버전을 확인 합니다.

root@oc-webwas:/# nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

저는 이미 nginx가 설치 되어 있지만
컴파일이 가능 configure 파일이 없어
wget으로 동일 한 버전의 Nginx 를 다운받았습니다.

추가로 ngx_brotli을 클론했습니다.

다운 받은 위치: /usr/local/src

wget http://nginx.org/download/nginx-1.18.0.tar.gz
git clone https://github.com/google/ngx_brotli.git --recursive

nginx1.8

새로 받은 nginx 파일을 풀어보시면 configure가 존재하는 것을 확인 할 수 있습니다.

71.3 현재 설치되어 있는 Nginx 설정정보 확인

nginx -V 명령을 통해 옵션 정보를 확인이 가능합니다.

V는 대문자이며, 나온 결과 중
configure arguments : 이후 부터 시작하는 정보는 메모장에 복사 해놓습니다.

nginx -V

71.4 nginx configure 컴파일 진행

/usr/local/src/nginx-1.18.0 의 configure를 아래와 같이 실행합니다.

Nginx 구성정보 는 이전에 nginx -V로 확인하고 메모장에 저장해놓은 정보이며,
ngx_brotli 경로는 다운로드 받은 위치의 ngx_brotli 경로를 잡아주시면 됩니다.

./configure Nginx 구성정보 \ 
--with-compat --add-dynamic-module=ngx_brotli 경로 

71.5 nginx 컴파일 에러시 라이브러리 설치

configure 진행시 에러가 발생하면 해당 라이브러리를 설치하면 됩니다.

저는 아래와 같은 에러가 발생하여 해결했습니다.

Nginx configure error: the HTTP rewrite module requires the PCRE library

sudo apt-get install libpcre3-dev

Nginx configure: error: the HTTP XSLT module requires the libxml2/libxslt.

sudo apt-get install libxml2 libxslt1-dev

Nginx configure: error: the HTTP image filter module requires the GD library.

sudo apt-get install php-gd libgd-dev

Nginx configure: error: the GeoIP module requires the GeoIP library.

sudo apt-get install libgeoip-dev

71.6 nginx 컴파일 성공 make module

컴파일이 성공하면 컴파일된 모듈이 objs 디렉토리로 내보내집니다
objs 폴더를 확인 하시면 확장자가 c인 파일만 있을겁니다.

make modules 명령을 실행하면 위 스샷과 같이
추가로 확장자가 so인 파일이 생성됩니다.

make modules

생성된 so 파일을 nginx 모듈 디렉토리에 복사해 줍니다.

cp ./ngx_http_brotli_filter_module.so /usr/lib/nginx/modules
cp ./ngx_http_brotli_static_module.so /usr/lib/nginx/modules

71.7 nginx.conf 파일 변경

실제 구동중인 nginx 서버 위치의 nginx.conf 파일을 수정합니다.

root@oc-webwas:/etc/nginx# vi nginx.conf

load_module 와
brotli settings(http{} 안에 추가해야 합니다. )을 추가합니다.

### brotli module add
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

 ##
 # brotli Settings
 ##
        brotli on;
                brotli_types
                application/javascript
                application/json
                image/svg+xml
                text/css
                text/plain;

nginx -t 명령어로 변경한 설정 파일이 정상적으로 변경 적용되는지 확인 합니다.

nginx -t

이상이 없다면 서버를 재시작 합니다.

service nginx stop
service nginx start

71.8 Brotli 적용 확인하기 - 응답헤더

응답헤더의 Content-Encoding에 br이 표시됩니다.

잘 적용되었습니다.

현재글 : 71 Nginx 서버 성능 개선 - Google Brotli
Comments
Login:

Copyright © PythonBlog 2021 - 2022 All rights reserved
Mail : PYTHONBLOG