Установка PageSpeed Module в NGINX

Приветствую Вас, уважаемые читатели. Сегодня тема статьи: "Установка PageSpeed Module в NGINX". В прошлой статье мы рассматривали установку модуля PageSpeed в Apache, в этой статье рассмотрим установку модуля в NGINX.
PageSpeed – это модуль для оптимизации скорости загрузки страниц сайта. Версия для веб-сервера NGINX - модуль ngx_pagespeed.
Официальный сайт проекта: https://www.modpagespeed.com/
- Чтобы ознакомиться с инструкцией установки модуля PageSpeed для NGINX, нужно перейти по соответствующей ссылке, на главной странице сайта разработчиков.

Выбор варианта использования модуля ngx_pagespeed
--- Есть несколько вариантов использования модуля PageSpeed для NGINX:
- Автоматическая установка на сервер, сборки NGINX, с уже встроенным модулем.
- Так же автоматическая установка модуля 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";

- Проверяем конфигурацию на ошибки, и если всё в норме, перезапускаем 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;

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

Через какое-то время, можно проверить качество работы модуля, на одном из соответствующих онлайн-сервисов.
Подробные инструкции по настройке модуля, можно найти на сайте разработчиков.
Сегодня мы рассмотрели тему: "Установка PageSpeed Module в NGINX". Произвели сборку и установку модуля ngx_pagespeed. Смотрите также видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Установка PageSpeed Module в NGINX":

WMZ-кошелёк = Z667041230317
«Linux»