brotil는 구글에서 개발한 압축 알고리즘이다
즉 보안과 속도를 향상시키는 하나의 기술이라고 할까
요즘 나오는 브라우저들은 모두 적용이 되다보니 서버에 설치를 해서 속도를 증가시켜보자
O/S : CentOS 7.x
Nginx : 1.21.x ( 컴파일로 설치 / 경로 : /usr/local/nginx )
기본 설치된 nginx 버전에서 brotli 동작이 되는지 헤더값으로 확인
1 2 3 4 5 6 7 8 9 10 11 |
[root@xinet ~]# curl -IL https://xinet.kr -H "Accept-Encoding: br" --insecure HTTP/1.1 200 OK Server: nginx Date: Fri, 29 Apr 2022 05:54:13 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Set-Cookie: PHPSESSID=h4d2lmoeg42i4q17rcbn3rv09j; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Link: <https://xinet.kr/index.php?rest_route=/>; rel="https://api.w.org/" |
현재는 지원하지 않는다
1. nginx에 설치는 간단하게 모듈을 다운로드 후 모듈을 추가해주면 된다
1 2 3 4 5 6 7 8 |
[root@xinet cgi-bin]# cd /usr/local/src [root@xinet src]# git clone https://github.com/google/ngx_brotli ### Nginx 처음 설치 폴더 / 없으면 동일 버전 다운로드 후 압축해제 [root@xinet ~]# cd /usr/local/src/ [root@xinet src]# cd nginx-1.21.6/ |
2. 모듈 생성 및 복사 ( /usr/local/nginx/modules 폴더가 없으면 생성
1 2 3 4 5 6 7 |
[root@xinet nginx-1.21.6]# ./configure --with-compat --add-dynamic-module=/usr/local/src/ngx_brotli [root@xinet nginx-1.21.6]# make modules [root@xinet nginx-1.21.6]# cp objs/ngx_http_brotli_filter_module.so /usr/local/nginx/modules/ [root@xinet nginx-1.21.6]# cp objs/ngx_http_brotli_static_module.so /usr/local/nginx/modules/ |
3. nginx 환경설정 내용 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@xinet nginx-1.21.6]# vi /usr/local/nginx/conf/nginx.conf ### module add load_module modules/ngx_http_brotli_filter_module.so; load_module modules/ngx_http_brotli_static_module.so; ### brotili (기본 http {} 안에 내용 추가 brotli on; brotli_static on; brotli_comp_level 6; brotli_types text/xml image/svg+xml application/x-font-ttf image/vnd.microsoft.icon application/x-font-opentype application/jso n font/eot application/vnd.ms-fontobject application/javascript font/otf application/xml application/xhtml+xml text/javascript appl ication/x-javascript text/plain application/x-font-truetype application/xml+rss image/x-icon font/opentype text/css image/x-win-bitm ap; |
4. nginx 구문 에러 확인
1 2 3 |
[root@xinet nginx-1.21.6]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful |
5. 문제 없으니 nginx 재시작
1 |
[root@xinet nginx-1.21.6]# systemctl restart nginx |
6. 다시 curl로 헤더값에 br 값을 주고 테스트
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@xinet nginx-1.21.6]# curl -IL https://xinet.kr -H "Accept-Encoding: br" --insecure HTTP/1.1 200 OK Server: nginx Date: Fri, 29 Apr 2022 06:12:33 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Set-Cookie: PHPSESSID=o44b28hj405siq0keov9vdvr7s; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Link: <https://xinet.kr/index.php?rest_route=/>; rel="https://api.w.org/" Content-Encoding: br |
인코딩 br 값이 확인이 된다