Гид по технологиям

Сборка Nginx с модулем PageSpeed в .deb для Ubuntu 16.04

• 5 min read • DevOps • Обновлено 21 Nov 2025
Nginx с PageSpeed: сборка .deb для Ubuntu 16.04
Nginx с PageSpeed: сборка .deb для Ubuntu 16.04

Введение

Nginx — это высокопроизводительный HTTP-сервер, обратный прокси и прокси для IMAP/POP3 с открытым исходным кодом. Отличается стабильностью, богатым набором функций, простой конфигурацией и низким потреблением памяти.

PageSpeed — модуль от Google для оптимизации скорости ответа веб‑сервера, автоматического преобразования HTML и снижения времени загрузки страниц. Основные возможности ngx_pagespeed:

  • Оптимизация изображений: удаление метаданных, динамическое изменение размеров, рекомпрессия.
  • Минификация, объединение, инлайн и вынос CSS и JavaScript.
  • Инлайнинг мелких ресурсов.
  • Отложенная загрузка изображений и JavaScript.
  • Переписывание HTML.
  • Продление времени жизни кэша.

Подробнее: https://developers.google.com/speed/pagespeed/module/.

Важно: модули Nginx в классических сборках (особенно старых) не загружаются динамически — их обычно включают при сборке пакета. Этот туториал демонстрирует именно такую сборку.

Предварительные требования

  • Ubuntu Server 16.04 — 64‑бит
  • Права root (или sudo)

Что мы сделаем:

  1. Установим пакеты, необходимые для сборки.
  2. Соберём Nginx с ngx_pagespeed и упакуем в .deb.
  3. Выполним тестирование и базовую проверку.

Установка зависимостей для сборки

sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

Установка Nginx с ngx_pagespeed

Шаг 1 — добавление репозитория nginx

Создайте новый файл репозитория /etc/apt/sources.list.d/nginx.list с помощью vim:

vim /etc/apt/sources.list.d/nginx.list

Вставьте туда строки:

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

Сохраните файл и выйдите из редактора.

Добавьте GPG‑ключ и обновите кэши пакетов:

sudo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62
sudo apt-get update

Шаг 2 — загрузка исходников nginx 1.10 из репозитория Ubuntu

Создайте каталог для исходников и загрузите их:

cd ~  
mkdir -p ~/new/nginx_source/  
cd ~/new/nginx_source/  
apt-get source nginx

Иногда возникает ошибка «packages cannot be authenticated». Если это произошло, можно очистить списки и обновить:

rm -rf /var/lib/apt/lists/  
apt-get update

Установите зависимости для сборки пакета:

apt-get build-dep nginx

Шаг 3 — загрузка PageSpeed

Создайте каталог для ngx_pagespeed и скачайте исходники. В этом примере используется версия pagespeed 1.11.33.

mkdir -p ~/new/ngx_pagespeed/  
cd ~/new/ngx_pagespeed/  
ngx_version= 1.11.33.3  
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}-beta.zip  
unzip release-${ngx_version}-beta.zip  
  
cd ngx_pagespeed-release-${ngx_version}-beta/  
wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz  
tar -xzvf ${ngx_version}.tar.gz

Примечание: в коде выше переменная ngx_version использована как в исходном примере; при необходимости корректно задайте значение без пробелов.

Шаг 4 — включение модуля PageSpeed в процесс сборки nginx

Перейдите в папку исходников nginx и отредактируйте файл debian/rules:

cd ~/new/nginx_source/nginx-1.10.1/debian/  
vim rules

Добавьте новую строку под COMMON_CONFIGURE_ARGS:

--add-module=../../ngx_pagespeed/ngx_pagespeed-release-1.11.33.3-beta \

Сохраните и выйдите.

Включение PageSpeed в конфигурации Nginx (вставка опции сборки)

Шаг 5 — сборка .deb пакета и установка

Перейдите в каталог исходников nginx и запустите сборку пакета:

cd ~/new/nginx_source/nginx-1.10.1/  
dpkg-buildpackage -b

Готовые пакеты будут сохранены под ~/new/ngix_source/. Проверьте содержимое каталога:

cd ~/new/ngix_source/  
ls

Готовый .deb пакет Nginx в каталоге сборки

Установите сгенерированные пакеты:

dpkg -i *.deb

Важно: если возникнут ошибки зависимости, используйте apt-get -f install для их автоматического разрешения.

Тестирование

Критерии приёмки

  • Команда nginx -V должна показывать, что модуль ngx_pagespeed собран в бинарник.
  • Конфигурация nginx проходит nginx -t без ошибок.
  • При запросе страницы видны оптимизированные ресурсы с именами, характерными для PageSpeed (например, URL-ы, содержащие .pagespeed.).

Шаг 1 — проверка сборки

nginx -V

Вы должны увидеть строку конфигурации сборки с добавленным --add-module=...ngx_pagespeed....

Шаг 2 — проверка работы через curl

Перейдите в директорию конфигурации и отредактируйте виртуальный хост (default.conf):

cd /etc/nginx/conf.d/
vim default.conf

Вставьте следующий фрагмент для включения ngx_pagespeed:

pagespeed on;  
  
# Needs to exist and be writable by nginx.  Use tmpfs for best performance.  
pagespeed FileCachePath /var/ngx_pagespeed_cache;  
  
# 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$" { }

Сохраните и закройте файл.

Пример виртуального хоста Nginx с настройками pagespeed

Проверьте конфигурацию и перезапустите сервис:

nginx -t
systemctl restart nginx

Сделайте запрос к серверу для быстрой проверки:

curl -I 192.168.1.6

Ответ сервера Nginx после установки PageSpeed (curl -I)

Если страницы отдаются, а ресурсы оптимизируются (в URL встречается .pagespeed.), значит модуль работает корректно.

Альтернативные подходы и когда сборка не нужна

  • Использовать готовые пакеты от репозиториев (nginx.org, официальные PPA), если они уже содержат требуемые модули.
  • Развернуть контейнер Docker с предварительно собранным nginx + pagespeed — удобно для тестирования и CI.
  • Если необходима возможность динамической загрузки модулей, используйте версии nginx с поддержкой динамических модулей (в новых ветках) или сборку с директивой --add-dynamic-module.

Когда сборка может не подойти:

  • На проприетарных дистрибутивах с политикой подписанных пакетов — лучше использовать официальные репозитории.
  • Если требуется частая смена модулей в продакшене — prefer динамические модули или контейнеризацию.

Практические подсказки и модели мышления

  • Ментальная модель: сборка = «фиксированная сборка бинарника» — выбираете набор модулей перед компиляцией; менять их в работающем бинарнике нельзя.
  • Хедж‑правило: сохраняйте копии оригинальных конфигураций и пакетов перед обновлением — это облегчает откат.
  • Мини‑методология: подготовка → загрузка исходников → включение модулей → сборка → тест → деплой.

Контроль качества и роль‑ориентированные чек‑листы

Для системного администратора:

  • Убедиться, что пакеты сборки и зависимости установлены.
  • Проверить nginx -V и nginx -t.
  • Настроить ротацию и права на /var/ngx_pagespeed_cache.

Для разработчика:

  • Проверить, что страницы корректно оптимизируются и не ломается JS/CSS при минификации.
  • Тестировать на стейдже перед продом.

Для инженера безопасности:

  • Убедиться, что кэш pagespeed защищён правами доступа и расположен не в публичной части сайта.
  • Проверить заголовки безопасности и отсутствие утечек метаданных.

Факты и версии

  • Целевая платформа: Ubuntu Server 16.04 — 64‑бит
  • Примерная версия nginx в данном руководстве: 1.10.1
  • Примерная версия ngx_pagespeed: 1.11.33 (psol ${ngx_version})

Безопасность и эксплуатация

  • Размещайте FileCachePath на разделе с достаточным местом и правильными правами: chown -R www-data:www-data /var/ngx_pagespeed_cache.
  • Рассмотрите tmpfs для кэша на высокопроизводительных системах — это уменьшит I/O, но потребует контроля памяти.
  • Мониторьте размер кэша и метрики I/O.

Краткий глоссарий

  • Nginx — веб‑сервер и обратный прокси.
  • ngx_pagespeed — модуль Google для автоматической оптимизации фронтенд‑ресурсов.
  • psol — бинарные зависимости PageSpeed, требуемые для обработки изображений.

Итоги

Сборка Nginx с модулем PageSpeed — рабочий способ получить сервер с автоматической оптимизацией контента в окружении, где нет готовых пакетов. Подойдёт для контролируемых окружений, staging и production при внимательной регулярной поддержке и мониторинге.

Ключевые шаги: подготовка окружения → загрузка исходников → включение модуля в debian/rules → сборка dpkg-buildpackage → тестирование и перезапуск.

Примечание: при обновлении Nginx повторите процесс сборки, чтобы не потерять включённый модуль.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро