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

Сборка nginx с ngx_pagespeed на Debian Jessie

• 5 min read • DevOps • Обновлено 20 Nov 2025
nginx с ngx_pagespeed на Debian Jessie
nginx с ngx_pagespeed на Debian Jessie

Краткая пошаговая инструкция по сборке nginx с модулем ngx_pagespeed на Debian Jessie (Debian 8). Собираем собственные .deb-пакеты, подключаем ngx_pagespeed, настраиваем кеш и фильтры, проверяем заголовки ответа. Заменяйте номера версий в примерах на актуальные.

Авторы: Falko Timme, F4RR3LL | Sven

О чём эта инструкция

Это руководство объясняет, как собрать nginx с последней доступной версией модуля ngx_pagespeed на Debian Jessie. Модуль PageSpeed применяет лучшие практики ускорения веба к страницам и связанным ресурсам (CSS, JavaScript, изображения), что снижает время загрузки сайта.

1 Сборка nginx с модулем PageSpeed

nginx не поддерживает динамическую загрузку модулей, поэтому нужно пересобрать пакет с поддержкой PageSpeed. В примере мы создаём .deb-пакет, чтобы можно было заменить существующую установку nginx или установить пакет на других системах.

Создайте рабочую директорию:

cd /usr/src  
mkdir nginx-pagespeed && cd nginx-pagespeed

Убедитесь, что в /etc/apt/sources.list есть строки deb и deb-src для Jessie (Debian 8):

nano /etc/apt/sources.list
[...]
deb http://ftp.de.debian.org/debian jessie main contrib non-free
deb-src http://ftp.de.debian.org/debian jessie main contrib non-free
[...]

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

apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev

Скачайте исходники nginx и зависимости для сборки:

apt-get source nginx
apt-get build-dep nginx

Проверьте версию загруженных исходников:

ls -l

Пример вывода (у вас могут быть другие версии):

root@nginx:/usr/src/nginx-pagespeed# ls -l  
insgesamt 1388  
drwxr-xr-x 10 root root 4096 Apr 29 22:16 nginx-1.6.2  
-rw-r–r– 1 root root 604568 Dez 1 12:51 nginx_1.6.2-5.debian.tar.xz  
-rw-r–r– 1 root root 2827 Dez 1 12:51 nginx_1.6.2-5.dsc  
-rw-r–r– 1 root root 804164 Sep 17 2014 nginx_1.6.2.orig.tar.gz

В примере версия nginx — 1.6.2. Перейдите в директорию debian/modules в исходниках nginx:

cd /usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/

Скачайте исходники PageSpeed (проверьте актуальную версию на https://github.com/pagespeed/ngx_pagespeed/releases). В примере используется release-1.9.32.3-beta — замените номера на актуальные при необходимости:

wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.9.32.3-beta.zip  
unzip release-1.9.32.3-beta.zip  
mv ngx_pagespeed-release-1.9.32.3-beta/ ngx_pagespeed  
cd ngx_pagespeed/  
wget https://dl.google.com/dl/page-speed/psol/1.9.32.3.tar.gz  
tar -xzvf 1.9.32.3.tar.gz

Откройте файл debian/rules для правки:

nano /usr/src/nginx-pagespeed/nginx-1.6.2/debian/rules

В этом файле найдите три секции configure_flags и добавьте строку

--add-module=$(MODULESDIR)/ngx_pagespeed \

в нужных местах: в light_configure_flags (после –without-http_uwsgi_module), в full_configure_flags (после –with-mail_ssl_module) и в extras_configure_flags (после –add-module=$(MODULESDIR)/nginx-development-kit). Результат должен соответствовать примеру в исходном руководстве. Обратите внимание: используйте табуляцию перед строками, как в оригинале.

Пример ключевой части файла debian/rules оставлено без изменений (см. исходник). После правок соберите пакеты:

cd /usr/src/nginx-pagespeed/nginx-1.6.2/ && dpkg-buildpackage -b

После успешной сборки посмотрите сгенерированные пакеты:

cd /usr/src/nginx-pagespeed  
 ls -l

Пример ожидаемых файлов (имена и размеры зависят от версии):

root@nginx:/usr/src/nginx-pagespeed# ls -l  
insgesamt 99720  
drwxr-xr-x 10 root root 4096 Apr 29 22:16 nginx-1.6.2  
-rw-r–r– 1 root root 72086 Apr 29 23:06 nginx_1.6.2-5_all.deb  
-rw-r–r– 1 root root 3961 Apr 29 23:08 nginx_1.6.2-5_amd64.changes  
... (и другие пакеты nginx-full, nginx-extras и т.д.)

Установите nginx с поддержкой PageSpeed (замените имена пакетов на ваши):

dpkg --install nginx-common_1.6.2-5_all.deb nginx_1.6.2-5_all.deb nginx-full_1.6.2-5_amd64.deb

Перезапустите nginx:

service nginx restart

Проверьте, что модуль PageSpeed вошёл в конфигурацию:

nginx -V

В выводе вы должны увидеть упоминание –add-module=…/ngx_pagespeed.

2 Настройка PageSpeed

Чтобы включить PageSpeed, откройте /etc/nginx/nginx.conf:

nano /etc/nginx/nginx.conf

Добавьте до определения виртуальных хостов:

        pagespeed on;
        pagespeed FileCachePath /var/ngx_pagespeed_cache;

Создайте директорию кеша и установите права:

mkdir /var/ngx_pagespeed_cache  
 chown -R www-data:www-data /var/ngx_pagespeed_cache

Перезагрузите конфигурацию nginx:

service nginx reload

Проверьте наличие заголовка X-Page-Speed в ответах сервера:

curl -I -p http://localhost|grep X-Page-Speed

Ожидаемый пример вывода (номер версии может отличаться):

root@nginx:/usr/src/nginx-pagespeed# curl -I -p http://localhost|grep X-Page-Speed  
X-Page-Speed: 1.9.32.3-4448

PageSpeed можно настраивать глобально или в каждом vhost. Пример конфигурации в /etc/nginx/sites-available/example.com.vhost:

nano /etc/nginx/sites-available/example.com.vhost
server {
[...]
  # даём PageSpeed быстрый memcached
  pagespeed MemcachedThreads 1;
  pagespeed MemcachedServers "localhost:11211";

  # настройки фильтров
  pagespeed RewriteLevel CoreFilters;
  pagespeed EnableFilters collapse_whitespace,remove_comments;

  # Убедиться, что запросы к оптимизированным ресурсам идут к обработчику pagespeed
  location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
    add_header "" "";
  }
  location ~ "^/ngx_pagespeed_static/" {
  }
  location ~ "^/ngx_pagespeed_beacon$" {
  }
  location /ngx_pagespeed_statistics {
    allow 127.0.0.1;
    deny all;
  }
  location /ngx_pagespeed_global_statistics {
    allow 127.0.0.1;
    deny all;
  }
  location /ngx_pagespeed_message {
    allow 127.0.0.1;
    deny all;
  }
  location /pagespeed_console {
    allow 127.0.0.1;
    deny all;
  }
[...]
}

Важно: ключевая строка pagespeed EnableFilters определяет, какие фильтры будут применяться. Список всех фильтров см. на http://ngxpagespeed.com/ngx_pagespeed_example/

Не забудьте перезагрузить nginx после правок:

service nginx reload

Просмотрите заголовки ответа или исходный HTML, чтобы убедиться, что фильтры PageSpeed применяются.

3 Полезные ссылки

Когда это может не сработать

  • Если вы используете очень старые или нестандартные пакеты nginx из сторонних репозиториев — может понадобиться адаптация debian/rules.
  • Если версии psol (binary dependency для ngx_pagespeed) и ngx_pagespeed не совпадают — сборка или runtime могут ломаться.
  • На окружениях с ограниченными правами сборка .deb может быть невозможна; в таком случае рассмотрите сборку nginx из чистого исходника или использование контейнера.

Альтернативные подходы

  • Установить nginx с PageSpeed из сторонних готовых пакетов (если доверяете репозиторию).
  • Использовать сторонние CDN/оптимизаторы (например, Cloudflare, Fastly), которые применяют похожие оптимизации без модификации сервера.
  • Применять ручную оптимизацию ресурсов (minify, спрайты, lazy-loading) в процессе CI/CD.

Пошаговый чеклист (мини-методология)

  1. Подготовить систему: обновить apt и установить пакеты для сборки.
  2. Скачать исходники nginx и зависимости сборки.
  3. Скачать ngx_pagespeed и соответствующий psol-архив.
  4. Внести правки в debian/rules (добавить –add-module=$(MODULESDIR)/ngx_pagespeed).
  5. Собрать пакеты: dpkg-buildpackage -b.
  6. Установить .deb-пакеты и перезагрузить nginx.
  7. Включить pagespeed в /etc/nginx/nginx.conf и создать кеш-директорию.
  8. Настроить фильтры в vhost и проверить заголовки/HTML.

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

  • nginx -V показывает –add-module=…/ngx_pagespeed.
  • Заголовок X-Page-Speed присутствует в ответах сервера.
  • Оптимизации (например, удаление комментариев или сжатие) видны в HTML или ресурсах.

Безопасность и приватность

  • PageSpeed кеширует ресурсы в указанной вами папке; убедитесь, что права доступа настроены корректно (chown www-data:www-data).
  • Если ваши страницы содержат персональные данные, проверьте, что PageSpeed не кэширует приватный контент в общем кеше.
  • Поставьте ограничения доступа к статистике pagespeed (пример показан в конфигурации — только 127.0.0.1).

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

  • ngx_pagespeed — модуль от PageSpeed для nginx, автоматически оптимизирующий ресурсы.
  • psol — предкомпилированная бинарная зависимость для ngx_pagespeed (PageSpeed Optimization Library).
  • vhost — виртуальный хост (виртуальная конфигурация сайта в nginx).

Частые проблемы и их решения

  • Ошибка сборки: проверьте, совпадают ли версии ngx_pagespeed и psol; скачайте соответствующую пару.
  • Нет заголовка X-Page-Speed: убедитесь, что pagespeed on; указан до include vhosts и что кеш-директория существет и доступна nginx.
  • Неправильные права на кеш: выполните chown -R www-data:www-data /var/ngx_pagespeed_cache.

FAQ

Q: Нужно ли менять версии в примерах?
A: Да. Всегда заменяйте номера версии (ngx_pagespeed, psol, nginx) на актуальные для вашей сборки.

Q: Можно ли подключить PageSpeed как динамический модуль?
A: Для этой версии nginx динамическая загрузка модулей не используется — требуется пересборка с модулем.

Q: Как быстро откатиться, если новая сборка ломает сайт?
A: Установите обратно предыдущие .deb-пакеты из резервной копии или переустановите пакет nginx из официального репозитория.


Краткое резюме

  • Соберите nginx как .deb с добавленным модулем ngx_pagespeed.
  • Включите pagespeed в конфиге, создайте кеш-директорию и задайте права.
  • Настройте фильтры в vhost и проверьте заголовки и HTML.
Поделиться: 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 быстро