Отображение валюты на сайте:

    При установке nginx средствами ОС в Linux нет возможности сконфигурировать его установку, чтобы добавить или убрать какие-либо модули и nginx устанавливается "как есть".

    Если необходимо добавить какой-либо модуль, то нужно пересобрать nginx вручную. О том как это правильно сделать в Linux написано в данной статье.

    Для примера, добавим в nginx модуль http_mp4_module. Вывод команды nginx -V покажет, что 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
    

    Далее, для сборки потребуется установить дополнительные пакеты.

    Debian/Ubuntu:

    # aptitude install build-essential
    

    CentOS:

    # yum install gcc gcc-c++ kernel-devel
    # yum groupinstall 'Development Tools'
    

    После установки пакетов приступаем к конфигурированию nginx с добавлением модуля http_mp4_module.

    Для этого копируем из текстового редактора вывод команды 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
    

    В конец строки добавляем --with-http_mp4_module чтобы получилось так:

    ./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 --with-http_mp4_module
    

    Нажимаем Enter и ждём окончания процесса.

    В процессе конфигурирования возможно будут появляться ошибки. Способы их устранения описаны ниже.

    Ошибка:

    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module  
    option, or install the PCRE library into the system, or build the PCRE library  
    statically from the source with nginx by using --with-pcre=<path> option.  
    

    Debian/Ubuntu исправляется установкой libpcre++-dev:

    # aptitude install libpcre++-dev
    

    CentOS исправляется установкой pcre-devel:

    # yum install pcre-devel
    

    Ошибка:

    ./configure: error: SSL modules require the OpenSSL library.
    You can either do not enable the modules, or install the OpenSSL library  
    into the system, or build the OpenSSL library statically from the source  
    with nginx by using --with-openssl=<path> option.  
    

    Debian/Ubuntu:

    # aptitude install libssl-dev
    

    CentOS:

    # yum install openssl-devel 
    

    Ошибка:

    ./configure: error: the GeoIP module requires the GeoIP library.
    You can either do not enable the module or install the library.  
    

    Debian/Ubuntu:

    # aptitude install libgeoip-dev
    

    CentOS:

    # yum install GeoIP-devel
    

    Ошибка:

    ./configure: error: the HTTP XSLT module requires the libxml2/libxslt
    libraries. You can either do not enable the module or install the libraries.  
    

    Debian/Ubuntu:

    # aptitude install libxslt1-dev
    

    CentOS:

    # yum install libxslt-devel
    

    Каждый раз после aptitude install или yum install недостающего пакета запускаем заново:

    ./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 --with-http_mp4_module
    

    После успешного окончания конфигурирования увидим на экране что-то вроде:

     nginx path prefix: "/etc/nginx"
     nginx binary file: "/etc/nginx/sbin/nginx"
     nginx configuration prefix: "/etc/nginx"
     nginx configuration file: "/etc/nginx/nginx.conf"
     nginx pid file: "/var/run/nginx.pid"
     nginx error log file: "/var/log/nginx/error.log"
     nginx http access log file: "/var/log/nginx/access.log"
     nginx http client request body temporary files: "/var/lib/nginx/body"
     nginx http proxy temporary files: "/var/lib/nginx/proxy"
     nginx http fastcgi temporary files: "/var/lib/nginx/fastcgi"
    

    Теперь можно собрать бинарник nginx - выполняем 2 команды:

    # make
    # make install
    

    По окончании сборки проверяем, что nginx собрался с нужным нам модулем:

    # /etc/nginx/sbin/nginx -V
    

    Результат:

    nginx version: nginx/1.2.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 --with-http_mp4_module
    

    Как видим, --with-http_mp4_module в выводе команды присутствует. Осталось заменить текущий бинарник 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.2.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 --with-http_mp4_module
    

    Запускаем nginx:

    # service nginx start
    

    Удаляем ненужную больше папку nginx-1.2.1:

    # cd ../
    # rm -r -f nginx-1.2.1