Настройка модуля PageSpeed для Nginx на сервере с Ubuntu 16/14

Собираем динамический модуль PageSpeed для использования в Nginx на сервере с Linux Ubuntu.

Установка динамического модуля PageSpeed для Nginx в Linux Ubuntu

И вот однажды вы просыпаетесь с мыслью, что хочется попробовать оптимизировать свой ресурс согласно рекомендациям Google для разработчиков. Чтобы и поисковой системе угодить, и посетители были довольны новой скоростью работы вашего сайта и оптимизацией потребления трафика. Значит пора установить модуль PageSpeed. В этой статье мы расскажем, как это сделать для Nginx на сервере с Linux Ubuntu 16/14. Причём PageSpeed можно собрать в виде динамического модуля, чтобы установить его на уже работающий сервер без глобальной перенастройки.

В основе излагаемого опыта лежат два официальных руководства: от Google и Nginx. Но по обоим получались затыки на последнем этапе. Компилятор не мог собрать модуль PageSpeed, выдавая различные ошибки. Потому пришлось искать собственное рабочее решение.

В итоге удалось собрать PageSpeed в виде динамического модуля, который в последствие даже смогли перенести с Linux Ubuntu 16.04 на аналогичный сервер с Linux Ununtu 14.04.

Обновляемся до актуальной версии Nginx

Перво-наперво нам необходимо вспомнить, что работать с динамическими модулями Nginx научился лишь с версии 1.9.11, а потому, возможно, нам придётся обновить сам веб-сервер для начала.

Лучшим решением оказалось полное удаление текущего Nginx с работающего сервера, а затем установка последней стабильной версии. Но не забудьте сохранить настройки конфигов. Обычно они хранятся по пути "/etc/nginx".

Затем в терминале выполняем команды:

sudo apt-get purge nginx nginx-common

sudo apt-get autoremove

Чтобы прибить сам Nginx, конфиги, которые отныне не нужны.

Далее в конец файла "/etc/apt/sources.list" стоит добавить следующие строки. Укажем, откуда устанавливать свежий Nginx.

Для Ubuntu 14:

deb http://nginx.org/packages/ubuntu/ trusty nginx

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

Для Ubuntu 16:

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

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

Затем в консоли выполняем команду, чтобы обновить данные о пакетах:

sudo apt-get update && apt-get dist-upgrade

И устанавливаем Nginx;

sudo apt-get install nginx

На текущий момент должна установиться версия Nginx 1.12.0. На самом деле после установки стоит выполнить команду, чтобы уточнить вашу версию:

nginx -v

Сборка динамического модуля PageSpeed

Здесь нам потребуется скачать и распаковать ngx_pagespeed и page speed optimisation libraries. Проверить какая сегодня последняя версия можно по ссылке - https://modpagespeed.com/doc/release_notes. Мы сегодня будем работать с ngx_pagespeed 1.12.34.2-beta.

NPS_VERSION=1.12.34.2

cd

wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}-beta.zip

unzip v${NPS_VERSION}-beta.zip

cd ngx_pagespeed-${NPS_VERSION}-beta/

psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.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}) # extracts to psol/

Затем необходимо скачать исходники Nginx. Опять же, предварительно проверяем последнюю версию по ссылке http://nginx.org/en/download.html. В нашем случае это 1.12.0.

 

NGINX_VERSION=1.12.0

cd

wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz

tar -xvzf nginx-${NGINX_VERSION}.tar.gz

cd nginx-${NGINX_VERSION}/

Затем начинаем процесс компиляции:

./configure --add-module=$HOME/ngx_pagespeed-${NPS_VERSION}-beta --with-compat ${PS_NGX_EXTRA_FLAGS}

make

Установка динамического модуля PageSpeed для Nginx в Linux Ubuntu

После чего у нас в директории "/root/nginx-1.12.0/objs" обнаружится файл "ngx_pagespeed.so". Значит мы успешно собрали динамический модуль PageSpeed. Теперь его необходимо скопировать в директорию "/usr/lib/nginx/modules" ("/etc/nginx/modules"). А в конфиге "nginx.conf" перед директивой "events" добавить строку:

load_module modules/ngx_pagespeed.so;

Теперь смело можно проверить конфигурацию Nginx и перезапустить его:

nginx -t

service nginx restart

Далее в конфиге каждого домена в директиву "server" добавляем строки:

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.

nginx -t

service nginx restart

И на всякий случай проверяем, существует ли директория "/var/ngx_pagespeed_cache" с правами доступа "755".

Теперь осталось выбрать оптимизации, которые вы хотите применить к своему сайту. Полный их перечень Google даёт здесь.

Кстати, если у вас есть какие-то свои соображения о том, какие из них наиболее ценные, то предлагаю обсудить собственные сочетания и конфиги в комментариях, поделиться опытом.

Теперь чтобы убедиться, что PageSpeed действительно работает, стоит найти в заголовках, которые отдаёт ваш сайт нечто похожее на "X-Page-Speed => 1.12.34.2-0". Если оно присутствует, вы всё сделали верно.

На всякий случай мы дадим ссылку на наш ngx_pagespeed.so. Но использовать его стоит только лишь в том случае, если у вас на сервере установлена та же самая версия Nginx.

Если вам интересны новости мира ИТ так же сильно, как нам, подписывайтесь на Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, удобнее "Вконтакте"?

Фото автораАвтор: Андрей "zeleboba" Матвеев
Шатаюсь, слушаю и наблюдаю. Пишу тексты.

Поговорить?


Уже наговорили:
Аватар автораИлья:
Привет, ребят, статья отличная, но вместо make - make module

Читайте нас где удобно

Ещё на эту тему было

Для тех, кто долистал

Ай-ти шуточка бонусом. Китайские дети утром делают зарядку, а вечером относят её в Евросеть.