NGINX 성능 최적화 Google PageSpeed 모듈 사용 편

NGINX 성능 최적화는 NGINX로 많은 트래픽을 빠르게 처리하고 싶어하는 사용자들의 공통 관심사 중 하나입니다. 웹 애플리케이션의 평균 크기가 계속 증가함에 따라 사용자가 사용하는 디바이스에 관계없이 사용자에게 좋은 디지털 경험을 제공하기 위해 웹 사이트의 디자인, 개발 및 제공의 모든 측면을 최적화하는 것이 점점 더 중요해지고 있습니다. 페이지 로드 시간이 사용자 경험(UX)과 서비스 수익에 영향을 미친다는 사실은 잘 알려져 있습니다.

Google PageSpeed 는 웹사이트의 성능을 측정하고 최적화하기 위한 도구이며 NGINX Open Source로 컴파일할 수 있는 Third‑party 모듈로 수년 동안 사용되었습니다. NGINX Plus R11에서부터 동적 모듈이 도입되면서 NGINX Plus 사용자는 이제 PageSpeed도 활용할 수 있습니다.

PageSpeed를 동적 모듈로 NGINX Plus에 로드하면 자동으로 웹사이트의 리소스를 다시 작성하고 최적화합니다. 이 포스트에서는 동적 모듈을 빌드하고 구성하는 방법을 설명합니다. (Third-part 모듈인 PageSpeed는 NGINX Plus Support에 포함되지 않습니다.)

목차

1. NGINX 성능 최적화를 위한 NGINX Plus용 동적 모듈로 PageSpeed 빌드 및 로드
1-1. NGINX 성능 최적화 준비 0단계: 빌드 환경 준비
1-2. NGINX 성능 최적화 시작 1단계: NGINX Open Source 얻기
1-3. 2단계: PageSpeed Source 다운로드 및 준비
1-4. 3단계: PageSpeed 동적 모듈 컴파일
1-5. 4단계: PageSpeed 동적 모듈 로드
2. NGINX 성능 최적화를 위한 PageSpeed Insights로 NGINX Plus PageSpeed 모듈 테스트

1. NGINX 성능 최적화를 위한 NGINX Plus용 동적 모듈로 PageSpeed 빌드 및 로드

다음 지침은 Google의 수동 설치 지침을 기반으로 하며 NGINX Plus와의 바이너리 호환성에 맞게 조정되었습니다. (Google의 지침을 그대로 사용하여 NGINX Open Source 와 함께 작동하는 동적 모듈을 빌드할 수 있습니다.)

1-1. NGINX 성능 최적화 준비 0단계: 빌드 환경

여기서는 “빌드 환경”이라고 하는 별도의 시스템에서 동적 모듈을 컴파일하는 것이 좋습니다. 이렇게 하면 PageSpeed모듈과 함께 NGINX Plus를 실행하려는 시스템의 위험과 복잡성이 최소화됩니다(이를 “프로덕션 환경”이라고 함). 빌드 환경은 운영체제 및 버전이 프로덕션 환경과 동일해야 합니다. 또한 다음 구성 요소를 설치해야 합니다.

  • 압축 해제 유틸리티
  • 컴파일러 및 make 유틸리티
  • Perl 호환 정규 표현식 라이브러리(개발 파일)
  • Zlib 압축 라이브러리(개발 파일)

빌드 환경에 이러한 전제 조건이 설치되어 있는지 확인하려면 다음 명령을 실행하십시오.

Ubuntu 및 Debian :

$ sudo apt-get install unzip gcc make libpcre3-dev zlib1g-dev

CentOS / RHEL / Oracle Linux :

$ sudo yum install unzip gcc make pcre-devel zlib-devel

1-2. NGINX 성능 최적화 시작 1단계: NGINX Open Source 얻기

1. 프로덕션 환경에서 작업하면서 다음 명령을 실행하여 실행 중인 NGINX Plus 릴리스에 해당하는 NGINX Open Source 버전을 식별합니다. 이 출력에서 주황색으로 강조 표시되어 있습니다. NGINX 1.11.5는 NGINX Plus R11에 해당합니다.

$ nginx -v nginx version: nginx/1.11.5 (nginx-plus-r11)

2. 빌드 환경에서 작업하면서 적절한 NGINX Open Source 버전에 대한 Source를 다운로드합니다.

$ wget -qO - http://nginx.org/download/nginx-1.11.5.tar.gz | tar zxfv -

1-3. 2단계: PageSpeed Source 다운로드 및 준비

빌드 환경에서 다음 단계를 수행합니다.

1. 릴리스 정보에서 또는 이 명령을 실행하여 PageSpeed모듈의 최신 버전 번호를 찾으십시오.

$ curl -sS https://modpagespeed.com/doc/release_notes | grep release_ | head -1 | sed -e "s/^.*release_([0-9.]*)-beta.*/1/"

2. PageSpeed 버전 번호는 빌드 명령에서 여러 번 사용되므로 NPS_VERSION 환경 변수로 설정합니다. ‑stable 또는 ‑beta 접미사가 아닌 버전 문자열의 숫자 부분만 포함합니다.

$ NPS_VERSION=numeric-part-of-version-string

3. 다음과 같이 Source를 다운로드하고 압축을 풉니다. 이러한 명령은 스크립트처럼 순차적으로 실행되어야 합니다.

wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}-beta.zip
unzip v${NPS_VERSION}-beta.zip
cd ngx_pagespeed-${NPS_VERSION}-beta/
psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
[ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
wget ${psol_url}
tar -xzvf $(basename ${psol_url})  # extracts to psol/

1-4. 3단계: PageSpeed 동적 모듈 컴파일

1. 빌드 환경에서 작업하면서 먼저 NGINX 구성 스크립트를 –with-compat 인수와 함께 실행하여 PageSpeed 동적 모듈을 컴파일하여 동적 모듈이 NGINX Plus와 바이너리 호환되도록 합니다. 그런 다음 make module을 실행하여 모듈만 컴파일합니다.

$ cd ../nginx-1.11.5
$ ./configure --add-dynamic-module=../ngx_pagespeed-${NPS_VERSION}-beta --with-compat
$ make modules

2. 빌드 프로세스는 동적 모듈을 objs/ngx_pagespeed.so로 생성합니다. .so 파일을 빌드 환경에서 프로덕션 환경의 모듈 디렉토리 /etc/nginx/modules로 복사합니다. 파일을 복사할 때 NGINX Open Source 버전 번호(예: ngx_pagespeed_1.11.5.so)를 포함하도록 이름을 바꾸는 것이 좋습니다(다음 단계에서는 가정).

3. 프로덕션 환경에서 작업하면서 버전 번호가 지정된 파일 이름과 일반(원본) 파일 이름 간에 심볼릭 링크를 만듭니다.

$ cd /etc/nginx/modules
$ sudo ln -s ngx_pagespeed_1.11.5.so ngx_pagespeed.so
$ ls -gG
-rw-r--r-- 1 11924784 Feb  6 11:52 ngx_pagespeed_1.11.5.so
lrwxrwxrwx 1       23 Feb  6 11:52 ngx_pagespeed.so -> ngx_pagespeed_1.11.5.so

1-5. 4단계: PageSpeed 동적 모듈 로드

프로덕션 환경에서 다음 단계를 수행합니다.

1. PageSpeed를 동적 모듈로 로드하려면 load_module 지시문을 포함합니다. 지시문은 nginx.conf 구성 파일의 최상위(“main”) 컨텍스트(즉, http 또는 stream 컨텍스트가 아님)에 나타나야 합니다.

load_module modules/ngx_pagespeed.so;

2. PageSpeed 자체는 http 컨텍스트에서 구성되므로 이러한 지시문을 /etc/nginx/conf.d 디렉토리의 pagespeed.conf라는 새 구성 파일에 넣습니다. PageSpeed는 proxy_pass 지시문(여기서는 http://www.example.com)에 지정된 웹사이트에 대해 활성화됩니다.

pagespeed MessageBufferSize 10240;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

server {
    listen 80;
    location / {
        proxy_pass http://www.example.com; 
    }
    pagespeed on;
}

3. NGINX Plus를 다시 로드하여 PageSpeed모듈을 실행 중인 인스턴스에 로드합니다.

$ sudo nginx -s reload

2. NGINX 성능 최적화를 위한 PageSpeed Insights로 NGINX Plus PageSpeed 모듈 테스트

PageSpeed Insights는 모바일 및 데스크톱 장치용 웹페이지에 적용된 최적화 수준을 측정하기 위해 Google에서 제공하는 별도의 도구입니다. 페이지 로드 속도를 높이는 방법에 대한 제안과 함께 두 장치에 대한 점수를 제공합니다. 사이트를 측정하고 PageSpeed모듈의 효과를 입증하는 데 유용한 도구입니다.

PageSpeed Insights 도구는 웹사이트의 페이지 로딩 성능을 평가하고 최적화 방법을 제안합니다. PageSpeed의 동적 모듈을 설치하면 NGINX는 96점이라는 높은 점수를 받습니다.

PageSpeed Insights를 사용하여 PageSpeed 사용 여부에 관계없이 사이트 점수와 최적화 제안을 비교할 수 있습니다. pagespeed on; 그리고 pagespeed off; 귀하의 사이트에서 PageSpeed모듈의 효과를 측정하기 위한 지시어 입니다.

PageSpeed는 추가 구성이나 조정 없이 최적화를 적용합니다. 그러나 사이트에서 수행되는 최적화를 보다 세부적으로 제어하려면 PageSpeed 설명서를 참조하십시오.

NGINX Plus와 함께 PageSpeed를 직접 사용해 보세요. 오늘 30일 무료 평가판을 시작하거나 당사에 연락하여 사용 사례에 대해 논의하십시오.

사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.