기존 Nginx에 pagespeed 모듈 달기

Karoid·2020년 3월 5일
0

이번에 검색 최적화(특히 모바일)을 고려해서 page speed를 기존에 있던 구버전 nginx에 적용하기로 했다. 문제는 nginx가 모듈을 하나 추가할 때마다 새로 컴파일을 해야한다는 것이다. 아직 nginx에 대한 이해가 별로 높지 않아서 일단 시키는 대로 따라가볼 생각이다.
현재 필자의 서버 환경은 다음과 같다.

Ubuntu 16.04
Nginx 1.17.3 (package로 설치)

모듈 소스 받기

cd /usr/local/src

sudo apt install git

sudo git clone --depth 1 -b latest-stable https://github.com/apache/incubator-pagespeed-ngx.git

cd incubator-pagespeed-ngx/

PSOL_BINARY_URL 파일을 확인해서 나오는 URL 파일을 받자

https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz

확인한 URL로 wget하고 압축을 푼다

wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
tar xvf 1.13.35.2-x64.tar.gz

Nginx 소스코드 받기

일단 nginx 버전을 확인한다.

$ nginx -v
nginx version: nginx/1.17.3

자신의 버전에 맞게 소스코드를 받고 압축을 풀고 폴더에 들어간다

cd /tmp
wget https://nginx.org/download/nginx-1.17.3.tar.gz
tar -xzvf nginx-1.17.3.tar.gz
cd nginx-1.17.3

다이나믹 모듈 빌드하기

sudo apt install uuid-dev libpcre3 libpcre3-dev
sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/incubator-pagespeed-ngx
sudo make modules

모듈을 빌드하고 나면 이제 원래 Nginx 모듈 위치로 옮겨준다

sudo cp objs/ngx_pagespeed.so /usr/share/nginx/modules/

에러가 뜬다면 modules 폴더를 생성한 후 다시 시도해보자

rm /usr/share/nginx/modules
mkdir /usr/share/nginx/modules

다이나믹 모듈 Nginx에 불러오기

/etc/nginx/nginx.conf파일 제일 앞줄에 다음을 추가한다

# 파일을 열고
sudo vi /etc/nginx/nginx.conf
# 다음 줄을 추가한다
load_module modules/ngx_pagespeed.so;
nginx -t

를 입력했는데 에러가 나면 중간 과정을 다시 해야한다.
여기를 참고해서 중간 과정을 다시 하자

이제 pagespeed 모듈을 사용할 수 있다.

pagespeed 모듈 사용하기

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed EnableFilters defer_javascript;
pagespeed EnableFilters insert_dns_prefetch;

# Ensure requests for pagespeed optimized resources go to the pagespeed handler
# and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
      add_header " " " ";
}
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

필자는 다음 내용을 server 안에 추가했다.

nginx -t

앞선 명령으로 제대로 설정 파일이 작동하는지 확인한 후 nginx를 재실행하자

service nginx restart
profile
Backend. Rails, MongoDB 강좌를 운영하고 있습니다

0개의 댓글