Добавление модулей nginx в Linux

Как пересобрать nginx с дополнительными модулями на Debian, Ubuntu и CentOS.

При установке nginx штатными средствами ОС добавить или убрать модули невозможно — nginx устанавливается с фиксированным набором. Чтобы подключить нужный модуль, необходимо пересобрать nginx вручную из исходников.

Шаг 1. Получить текущую конфигурацию nginx

Выполните команду и сохраните её вывод в текстовый редактор — он понадобится при конфигурировании:

nginx -V

Пример вывода:

nginx version: nginx/1.12.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log ...

В данном примере установлена версия 1.12.1 — именно её и нужно скачать.

Шаг 2. Скачать исходники nginx

wget http://nginx.org/download/nginx-1.12.1.tar.gz

Распакуйте архив и перейдите в папку с исходниками:

tar -xvf nginx-1.12.1.tar.gz
cd nginx-1.12.1

Шаг 3. Установить модуль PageSpeed

bash <(curl -f -L -sS https://ngxpagespeed.com/install) \
     --nginx-version $nginxversion

Сохранить все модули:

bash <(curl -f -L -sS https://ngxpagespeed.com/install) -m

Шаг 4. Сконфигурировать nginx с новым модулем

Из сохранённого вывода nginx -V скопируйте аргументы конфигурации, начиная с --prefix= и до первого --add-module= (все существующие --add-module= не нужны).

Выполните ./configure с этими аргументами и добавьте в конец --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable:

./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-log-path=/var/log/nginx/access.log \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--lock-path=/var/lock/nginx.lock \
--pid-path=/var/run/nginx.pid \
--with-pcre-jit --with-http_gzip_static_module \
--with-http_ssl_module --with-ipv6 \
--without-http_browser_module --with-http_geoip_module \
--without-http_memcached_module --without-http_referer_module \
--without-http_scgi_module --without-http_split_clients_module \
--with-http_stub_status_module --without-http_ssi_module \
--without-http_userid_module --without-http_uwsgi_module \
--add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable

Шаг 5. Собрать nginx

make
make install

После сборки проверьте, что новый модуль присутствует в выводе:

/etc/nginx/sbin/nginx -V

В выводе должна присутствовать строка --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable.

Шаг 6. Заменить бинарник nginx

Остановите nginx:

service nginx stop

Переименуйте текущий бинарник на случай отката:

mv /usr/sbin/nginx /usr/sbin/nginx_back

Переместите новый бинарник:

mv /etc/nginx/sbin/nginx /usr/sbin/nginx

Удалите ставшую ненужной папку:

rm -rf /etc/nginx/sbin

Проверьте, что используется новый бинарник:

nginx -V

В выводе должна присутствовать строка --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable.

Запустите nginx:

service nginx start

Удалите папку с исходниками:

cd ../
rm -rf nginx-1.12.1

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Обновлено:
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам