ngx_pagespeed — это модуль с открытым исходным кодом для Nginx, который автоматически внедряет лучшие практики для повышения скорости загрузки сайтов. В данном руководстве мы рассмотрим процесс компиляции Nginx с подключением модуля ngx_pagespeed на сервере Ubuntu LTS.
Содержание статьи
- 1 Создание резервной копии конфигурационных файлов Nginx
- 2 Подключение официального репозитория Nginx.
- 3 Загрузка первоначального пакета Nginx
- 4 Скачивание начального пакета ngx_pagespeed
- 5 Внедрение модуля ngx_pagespeed в конфигурацию компиляции Nginx.
- 6 Приступите к компиляции.
- 7 Активируйте модуль ngx_pagespeed.
- 8 Убедитесь, что PageSpeed функционирует корректно.
- 9 Обеспечьте защиту Nginx от автоматического обновления.
Создание резервной копии конфигурационных файлов Nginx
После компиляции и установки Nginx ваши первоначальные конфигурационные файлы будут заменены. Для создания резервной копии основного конфигурационного файла и файлов серверных блоков в вашем домашнем каталоге воспользуйтесь следующей командой. Символ тильда (~) представляет собой ваш основной каталог.
cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~
Подключение официального репозитория Nginx.
В данном руководстве будет представлено, как собрать последнюю стабильную версию Nginx. Мы добавим официальный репозиторий Nginx, как указано ниже.
Сначала необходимо загрузить ключ GPG для Nginx и добавить его в систему вашего сервера на базе Ubuntu.
wget http://nginx. org/keys/nginx_signing. key sudo apt-key add nginx_signing. key
После этого сформируйте файл с перечнем источников для Nginx.
sudo nano /etc/apt/sources. list. d/nginx. list
Включите следующие две строки в данный файл. Строка deb-src дает возможность загружать исходные пакеты Nginx с использованием команды apt source.
deb http://nginx. org/packages/mainline/ubuntu/ focal nginx deb-src http://nginx. org/packages/mainline/ubuntu/ focal nginx
Если вы работаете с Ubuntu 22.04, замените focal на jammy.
Используйте сочетание Ctrl+O для сохранения документа. Для закрытия файла нажмите Ctrl+X. После этого обновите индекс локальных пакетов.
sudo apt update
Теперь официальный репозиторий Nginx интегрирован в сервер Ubuntu.
Загрузка первоначального пакета Nginx
В домашней директории мы организуем каталог для Nginx, где будут храниться его исходные файлы, после чего переместимся в созданный каталог.
mkdir ~/nginx && перейти в директорию~/nginx
Установите пакет dpkg-dev и скачайте исходный пакет Nginx, воспользовавшись следующей командой:
sudo apt install dpkg-dev sudo apt source nginx
Пожалуйста, убедитесь в правильности загруженных файлов.
ls ~/nginx/
nginx-1.23.2 nginx_1.23.2-1~focal. dsc nginx версии 1.23.2-1~focal. debian. tar. xz nginx_1.23.2.orig. tar.gz
Скачивание начального пакета ngx_pagespeed
Для сборки Nginx с модулем ngx_pagespeed потребуется исходный пакет ngx_pagespeed. Посетите страницу загрузки ngx_pagespeed на GitHub и скачайте последнюю бета-версию (на данный момент это v1.13.35.2-beta) в ваш домашний каталог. Учтите, что номер версии может измениться.
cd ~скачать архив с помощью команды wget: wget https://codeload.github.com/pagespeed/ngx_pagespeed/zip/v1.13.35.2-beta
sudo apt-get install unzip unzip v1.13.35.2-beta
Переместитесь в только что созданную папку:
cd incubator-pagespeed-ngx-1.13.35.2-beta/
Также необходимо загрузить библиотеку PSOL (PageSpeed Optimization Library) и извлечь её содержимое. Версия библиотеки должна совпадать с версией PageSpeed.
wget https://dl. google.com/dl/page-speed/psol/1.13.35.2-rx64.tar.gz распакуйте с помощью команды tar xvf1.13.35.2-x64.tar.gz
Это приведет к образованию каталога psol внутри другого каталога.~/инкубатор-страницы-скорости-ngx-1.13.35.2-бета, и именно в этом месте ему суждено находиться.
Внедрение модуля ngx_pagespeed в конфигурацию компиляции Nginx.
Измените файл с правилами компиляции для Nginx.
sudo nano ~/nginx/nginx-1.23.2/debian/rules
В завершение раздела COMMON_CONFIGURE_ARGS вставьте следующую строку. Подмените username на своё реальное имя пользователя. Данная строка указывает путь к модулю ngx_pagespeed.
--add-module=/home/username/ngx_pagespeed-1.13.35.2-beta
Данный учебник скачивает страницу исходного кода ngx_pagespeed в директорию пользователя. Если вы работаете под учетной записью root, замените /home/username на /root, так как для пользователя root его домашний каталог — это /root.
Обратите внимание, что в строку —with-ld-opt необходимо добавить обратный слеш, как показано на скриншоте ниже. В противном случае строка —add-module, которую вы указали, будет проигнорирована во время компиляции Nginx.

Теперь сохраните изменения и закройте документ.
Приступите к компиляции.
Убедитесь, что вы находитесь в папке с исходниками Nginx.
cd ~/nginx/nginx-1.23.2/
Убедитесь, что вы установили все требуемые зависимости для компиляции нашего deb-пакета Nginx.
sudo apt build-dep nginx
Теперь примените следующую команду для создания пакета deb.
sudo dpkg-buildpackage - b
Приготовьте чашку кофе и подождите несколько минут. На одном процессоре KVM VPS сборка заняла примерно 10 минут. После завершения, в каталоге~В каталоге /nginx/ будет находиться 7 файлов с расширением. deb. Нам необходимо установить пакет nginx_1.11.1-1.~xenial_amd64.deb или nginx версии 1.11.1-1~xenial_i386.deb следует выбирать в зависимости от архитектуры вашей операционной системы. Остальные пакеты представляют собой динамический модуль Nginx и пакет для отладки. Установить их также возможно, если это необходимо.
Если вы уже устанавливали Nginx, сейчас подходящий момент для удаления устаревшей версии и установки актуальной.
sudo apt remove nginx nginx-common nginx-full cd ~/nginx sudo dpkg - i nginx_1.23.2-1~focal_amd64.deb
sudo dpkg - i nginx_1.23.2-1~focal_i386.deb
Теперь приступим к запуску Nginx.
sudo systemctl start nginx
Если вам появится данное сообщение об ошибке.
Не удалось запустить nginx.service: Единица nginx.service замаскирована.
Тогда отключите маскировку Nginx и снова запустите команду.
sudo systemctl unmask nginx
Имейте в виду, что процесс Nginx может функционировать под учетной записью пользователя nginx или www-data. Это можно изменить, изменив первую строку в файле /etc/nginx/nginx.conf.Убедитесь, что Nginx работает под тем же пользователем, что и PHP-FPM.
Теперь убедитесь в корректности аргументов конфигурации Nginx.
sudo nginx - V
Если внизу страницы вы наблюдаете указанную строку, это означает, что модуль ngx_pagespeed был успешно интегрирован в Nginx.
--add-module=/home/username/ngx_pagespeed-1.13.35.2-beta
Активируйте модуль ngx_pagespeed.
<
Сохраните изменения в файле конфигурации вашего серверного блока и закройте его. После этого выполните перезагрузку Nginx.
sudo systemctl reload nginx
Убедитесь, что PageSpeed функционирует корректно.
Зайдите на ваш сайт и обновите страницу несколько раз. Затем откройте исходный код страницы. Нажмите Ctrl+F и введите pagespeed. Вы заметите, что множество ресурсов вашего сайта прошло обработку через pagespeed. Некоторые файлы CSS и JavaScript были объединены в один. Если вы используете браузер Google Chrome, то увидите, что изображения на вашем сайте конвертированы в формат webp, что позволяет существенно сократить их размер.
Вы можете проверить работу ngx_pagespeed, сопоставив результаты тестов на скорость вашего сайта.
На вашем сервере можно использовать следующую команду:
curl - I - p http://your-domain.com| grep X-Page-Speed
Вы сможете увидеть номер версии X-Page-Speed.
X-Page-Speed: 1.13.35.2-7423
Обеспечьте защиту Nginx от автоматического обновления.
Если в репозитории есть новая версия Nginx, команда apt-get upgrade автоматически обновит Nginx, что приведёт к удалению вашего модуля ngx_pagespeed. Чтобы избежать этого обновления, используйте следующую команду:
sudo apt-mark hold nginx
Для демонстрации удерживаемых пакетов:
apt-mark showhold
Некоторые директивы pagespeed, которые можно включить в конфигурацию серверного блока Nginx, отсутствуют в CoreFilters.
pagespeed EnableFilters collapse_whitespace; pagespeed EnableFilters lazyload_images; pagespeed EnableFilters insert_dns_prefetch;

После внесения изменений в конфигурационные файлы серверного блока не забудьте перезапустить Nginx.
Чтобы узнать более подробную информацию о каждом из фильтров, посетите страницу фильтров Google PageSpeed.
Мы всегда рады вашим комментариям, вопросам и предложениям. Если данный пост оказался для вас полезным, не стесняйтесь поделиться им с друзьями в соцсетях! Подписывайтесь на нас, чтобы не пропустить новые уроки по Linux.

