При установке nginx средствами ОС в Linux нет возможности сконфигурировать его установку, чтобы добавить или убрать какие-либо модули и nginx устанавливается "как есть".
Если необходимо добавить какой-либо модуль, то нужно пересобрать nginx вручную.
# nginx -V
nginx version: nginx/1.12.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --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 --without-http_geo_module --without-http_limit_req_module --without-http_limit_zone_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-module=/tmp/buildd/nginx-1.12.0/debian/modules/nginx-echo
Сохраним вывод команды nginx -V в текстовый редактор - эта информация пригодится при конфигурировании.
Видим, что версия nginx у нас установлена 1.12.1 - скачиваем такую же версию:
# wget http://nginx.org/download/nginx-1.12.1.tar.gz
Распакуем архив и перейдём в папку nginx-1.12.1:
# tar –xvf nginx-1.12.1.tar.gz
# cd nginx-1.12.1
Далее, потребуется установить предустановленный набор модулей.
# bash <(curl -f -L -sS https://ngxpagespeed.com/install) \
--nginx-version $nginxversion
Сохраняем все модули:
bash <(curl -f -L -sS https://ngxpagespeed.com/install) -m
После установки пакетов приступаем к конфигурированию nginx с добавлением модулей.
Для этого копируем из текстового редактора вывод команды nginx -V начиная с --prefix= и до первого --add-module= (все присутствующие в выводе --add_module= не нужны).
После чего пишем в консоли ./configure и вставляем скопированное из редактора:
./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 чтобы получилось так:
./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
Нажимаем Enter и ждём окончания процесса.
Теперь можно собрать бинарник nginx - выполняем 2 команды:
# make
# make install
По окончании сборки проверяем, что nginx собрался с нужным нам модулем:
# /etc/nginx/sbin/nginx -V
Результат:
nginx version: nginx/1.12.1
TLS SNI support enabled
configure arguments: ./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
Как видим, --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable в выводе команды присутствует. Осталось заменить текущий бинарник nginx новым, который мы только что собрали.
Останавливаем nginx:
# service nginx stop
Переименовываем (на всякий случай) текущий nginx в nginx_back:
# mv /usr/sbin/nginx /usr/sbin/nginx_back
Перемещаем на его место новый собранный бинарник:
# mv /etc/nginx/sbin/nginx /usr/sbin/nginx
Удаляем ненужную больше папку /etc/nginx/sbin:
# rm -r -f /etc/nginx/sbin
Проверяем ещё раз, что nginx у нас теперь тот, что нужно:
# nginx -V
Результат:
nginx version: nginx/1.12.1
TLS SNI support enabled
configure arguments: ./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
Запускаем nginx:
# service nginx start
Удаляем ненужную больше папку nginx-1.12.1:
# cd ../
# rm -r -f nginx-1.12.1