이번에 검색 최적화(특히 모바일)을 고려해서 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 -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
/etc/nginx/nginx.conf파일 제일 앞줄에 다음을 추가한다
# 파일을 열고
sudo vi /etc/nginx/nginx.conf
# 다음 줄을 추가한다
load_module modules/ngx_pagespeed.so;
nginx -t
를 입력했는데 에러가 나면 중간 과정을 다시 해야한다.
여기를 참고해서 중간 과정을 다시 하자
이제 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