Поиск и установка сторонних модулей в Nginx

nginx logo

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

Процедура установки стороннего модуля очень проста.
1. Найдите интересующий вас модуль (на сайте https://github.com).

2. Скачайте модуль.

3. Распакуйте архив с исходным кодом. А. Прочитайте файл README, если он имеется. Проверьте, истли дополнительных зависимостей.

4. Сконфигурируйте NGINX, так чтобы она использовала модуль ./configure -add-module=.


В результате получится двоичный файл nginx, в который включена функциональность добавленного модуля. Помните, что многие сторонние модули носят экспериментальный характер. Перед тем как использовать модуль в производственной системе, протестируйте его.

И не забывайте, что в разрабатываемые версии NGINX могут быть внесены такие изменения API, что сторонние модули перестанут работать. Особо отметим модуль ngx_lua, который позволяет использовать в качестве скриптового языка конфигурирования Lua вместо Perl. По сравнению с perl у этого модуля есть важное достоинство: он не блокирует выполнение программы и тесно интегрирован с другими сторонними модулями.

Полная инструкция по установке приведена на странице http://wiki.nginx.org/HttpLuaModule#Installation. В следую- щем разделе мы на примере этого модуля продемонстрируем про- цедуру установки стороннего модуля.

Пример

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

$ export BUILD_DIR=`pwd`
$ export NGINX_INSTALLDIR=/opt/nginx
$ export VAR_DIR=/home/www/tmp
$ export LUAJIT_LIB=/opt/luajit/lib
$ ./configure \
--prefix=${NGINX_INSTALLDIR} \
--user=www \
--group=www \
--http-client-body-temp-path=${VAR_DIR}/client_body_temp \
--http-proxy-temp-path=${VAR_DIR}/proxy_temp \
--http-fastcgi-temp-path=${VAR_DIR}/fastcgi_temp \
--without-http_uwsgi_module \
--without-http_scgi_module \
--without-http_browser_module \
--with-openssl=${BUILD_DIR}/../openssl-1.0.1c \
--with-pcre=${BUILD_DIR}/../pcre-8.32 \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--add-module=${BUILD_DIR}/ngx_devel_kit-0.2.17 \
--add-module=${BUILD_DIR}/ngx_lua-0.7.9

После многочисленных сообщений о том, что скрипт configure нашел в вашей системе, печатается такая сводка:

Configuration summary
+ using PCRE library: /home/builder/build/pcre-8.32
+ using OpenSSL library: /home/builder/build/openssl-1.0.1c
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/opt/nginx"
nginx binary file: "/opt/nginx/sbin/nginx"
nginx configuration prefix: "/opt/nginx/conf"
nginx configuration file: "/opt/nginx/conf/nginx.conf"
nginx pid file: "/opt/nginx/logs/nginx.pid"
nginx error log file: "/opt/nginx/logs/error.log"
nginx http access log file: "/opt/nginx/logs/access.log"
nginx http client request body temporary files: "/home/www/tmp/
client_body_temp"
nginx http proxy temporary files: "/home/www/tmp/proxy_temp" 
nginx http fastcgi temporary files: "/home/www/tmp/fastcgi_temp"

Как видим, configure нашел все, что мы просили, и подтвердил указанные пути. Теперь можно собрать и установить nginx, как объяснялось в начале этой главы.

Статья написана на примере московского сайта sonic-center.ru