Fornex
Европейский
хостинг

    При установке 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