Приветствую Вас, уважаемые читатели. Сегодня тема статьи: "Установка PageSpeed Module в NGINX". В прошлой статье мы рассматривали установку модуля PageSpeed в Apache, в этой статье рассмотрим установку модуля в NGINX.

PageSpeed – это модуль для оптимизации скорости загрузки страниц сайта. Версия для веб-сервера NGINX - модуль ngx_pagespeed.

Официальный сайт проекта: https://www.modpagespeed.com/

  • Чтобы ознакомиться с инструкцией установки модуля PageSpeed для NGINX, нужно перейти по соответствующей ссылке, на главной странице сайта разработчиков.
ссылка на инструкции по установке модуля PageSpeed в nginx

Выбор варианта использования модуля ngx_pagespeed

--- Есть несколько вариантов использования модуля PageSpeed для NGINX:

  1. Автоматическая установка на сервер, сборки NGINX, с уже встроенным модулем.
  2. Так же автоматическая установка модуля PageSpeed, но в качестве динамического модуля.
  3. И ручная сборка, в качестве динамического модуля.
варианты использования модуля PageSpeed
  •  Мы рассмотрим последний вариант, то есть ручную сборку в качестве динамического модуля. Будем отталкиваться от того, что у нас уже есть работающий веб-сервер NGINX.

В такой конфигурации, модуль будет привязан к версии NGINX. При обновлении версии веб-сервера, нужно будет производить полную пересборку модуля.

Установка необходимых пакетов

  • Сначала нужно установить основные необходимые пакеты, имеющиеся в репозиториях по умолчанию.
# yum install gcc-c++ pcre-devel zlib-devel wget make unzip libuuid-devel
  • Далее нужно подключить сторонний репозиторий, в котором есть недостающие пакеты.
# yum install centos-release-scl-rh
  • Производим установку недостающих пакетов.
# yum install devtoolset-8-gcc-c++ devtoolset-8-binutils
  • Прежде чем начать сборку, устанавливаем необходимую переменную.
# PS_NGX_EXTRA_FLAGS="--with-cc=/opt/rh/devtoolset-8/root/usr/bin/gcc"

Сборка модуля ngx_pagespeed

  • Теперь всё готово к сборке. Для начала нужно узнать последнюю версию пакета PageSpeed на официальном сайте: https://www.modpagespeed.com/doc/release_notes
  • После чего, можно выполнить необходимые команды. Эти команды, можно выполнить одним разом. Скопировать целиком и отправить в консоль.
  • Только обратите внимание на первую строчку, задающую переменную с версией пакета. Версию измените на свою. В моем случае это версия 1.13.35.2-stable.

# NPS_VERSION=1.13.35.2-stable
cd /usr/local/src/
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.zip
unzip v${NPS_VERSION}.zip
nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d)
cd "$nps_dir"
NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.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})

  • Следующим шагом, нужно узнать версию работающего у нас NGINX.
# nginx -v
  • Узнав версию веб-сервера, можно выполнить второй блок команд, включающий в себя сборку искомого модуля.
  • Также как и в предыдущем случае, можно выполнить команды одним разом. Но не забываем про версию NGINX, её нужно указать в первой строчке, задающей необходимую переменную. В моём случае это версия 1.16.1.
# NGINX_VERSION=1.16.1
cd /usr/local/src/
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/
./configure --with-compat --add-dynamic-module=../$nps_dir ${PS_NGX_EXTRA_FLAGS}
make
make install
  • На этом сборка динамического модуля PageSpeed для NGINX завершена. Осталось перенести его в нужную директорию, подключить, и создать базовую конфигурацию.

Подключение и конфигурация модуля ngx_pagespeed

  • Копируем созданный модуль, в директорию с модулями NGINX.
# cp objs/ngx_pagespeed.so /etc/nginx
  • Теперь нужно подключить модуль в файле /etc/nginx/nginx.conf.
load_module "/etc/nginx/ngx_pagespeed.so";
подключение модуля ngx_pagespeed
  • Проверяем конфигурацию на ошибки, и если всё в норме, перезапускаем NGINX.
# nginx -t
# systemctl restart nginx
  • Далее создаём директорию, в которой модуль будет хранить кэш, и добавляем нужные права.
# mkdir -p /var/cache/nginx/ngx_pagespeed
# chown nginx:nginx /var/cache/nginx/ngx_pagespeed
  • Следующим шагом, нужно добавить базовую конфигурацию. Это делается путём добавления блока кода, в секцию server {…}, конфигурационного файла нужного сайта.

pagespeed on;
pagespeed FileCachePath /var/cache/nginx/ngx_pagespeed;
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
  add_header "" "";
}
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

  • Можно пойти другим путём… Создать отдельный файл, например /etc/nginx/conf.d/pagespeed.inc, добавить в него блок кода, и подключать файл в нужных местах.
include /etc/nginx/conf.d/pagespeed.inc;
подключение файла базовой конфигурации ngx_pagespeed
  • После добавления базовой конфигурации, нужно произвести проверку на ошибки. Если всё в норме, то можно перезапустить NGINX.
# nginx -t
# systemctl restart nginx
  • Для проверки работы модуля, после посещения нескольких страниц сайта, можно заглянуть в директорию /var/cache/nginx, в которой мы создали папку ngx_pagespeed для кэша модуля. Если в папке есть какое-то содержимое, то значит модуль функционирует.
папка с кэшем модуля ngx_pagespeed

Через какое-то время, можно проверить качество работы модуля, на одном из соответствующих онлайн-сервисов.

Подробные инструкции по настройке модуля, можно найти на сайте разработчиков.

Сегодня мы рассмотрели тему: "Установка PageSpeed Module в NGINX". Произвели сборку и установку модуля ngx_pagespeed. Смотрите также видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Установка PageSpeed Module в NGINX":