Сборка nginx из исходных файлов
Сборка настраивается командой configure
.
Она определяет особенности системы и, в частности, методы, которые nginx
может использовать для обработки соединений.
В конце концов она создаёт Makefile
.
Команда configure
поддерживает следующие параметры:
-
--help
- печатает справочное сообщение.
-
--prefix=
путь
-
задаёт каталог, в котором будут находиться файлы сервера.
Этот же каталог будет использоваться для всех относительных путей,
задаваемых
configure
(кроме путей к исходным текстам библиотек) и в конфигурационном файлеnginx.conf
. По умолчанию — каталог/usr/local/nginx
. -
--sbin-path=
путь
-
задаёт имя исполняемого файла nginx.
Это имя используется только на стадии установки.
По умолчанию файл называется
.префикс
/sbin/nginx -
--modules-path=
путь
-
задаёт каталог, в который будут устанавливаться динамические модули.
По умолчанию используется каталог
.префикс
/modules -
--conf-path=
путь
-
задаёт имя конфигурационного файла
nginx.conf
. При желании nginx можно всегда запустить с другим конфигурационным файлом, указав его в параметре командной строки . По умолчанию файл называется-c
файл
.префикс
/conf/nginx.conf -
--error-log-path=
путь
-
задаёт имя основного файла ошибок, предупреждений и диагностики.
После установки имя файла можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы error_log. По умолчанию имя файла —
.префикс
/logs/error.log -
--pid-path=
путь
-
задаёт имя файла
nginx.pid
, в котором будет храниться номер главного процесса. После установки имя файла можно всегда поменять в конфигурационном файлеnginx.conf
с помощью директивы pid. По умолчанию имя файла —
.префикс
/logs/nginx.pid -
--lock-path=
путь
-
задаёт префикс имён файлов блокировок.
После установки значение можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы lock_file. По умолчанию используется значение
.префикс
/logs/nginx.lock
-
--user=
имя
-
задаёт имя непривилегированного пользователя, с правами которого будут
выполняться рабочие процессы.
После установки это имя можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы user. По умолчанию имя пользователя nobody. -
--group=
имя
-
задаёт имя группы, с правами которой будут выполняться рабочие процессы.
После установки это имя можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы user. По умолчанию группа совпадает с именем непривилегированного пользователя.
-
--build=
имя
- задаёт необязательное имя сборки nginx.
-
--builddir=
путь
- задаёт каталог для сборки.
-
--with-select_module
--without-select_module
-
разрешает или запрещает сборку модуля для работы сервера
с помощью метода
select()
. Этот модуль собирается автоматически, если на платформе не обнаружено более подходящего метода — kqueue, epoll или /dev/poll. -
--with-poll_module
--without-poll_module
-
разрешает или запрещает сборку модуля для работы сервера
с помощью метода
poll()
. Этот модуль собирается автоматически, если на платформе не обнаружено более подходящего метода — kqueue, epoll или /dev/poll. -
--with-threads
- разрешает использование пулов потоков.
-
--with-file-aio
- разрешает использование файлового асинхронного ввода-вывода (AIO) во FreeBSD и Linux.
-
--with-http_ssl_module
- разрешает сборку модуля для работы HTTP-сервера по протоколу HTTPS. По умолчанию модуль не собирается. Для сборки и работы этого модуля нужна библиотека OpenSSL.
-
--with-http_v2_module
- разрешает сборку модуля для работы HTTP-сервера по протоколу HTTP/2. По умолчанию модуль не собирается.
-
--with-http_v3_module
- разрешает сборку модуля для работы HTTP-сервера по протоколу HTTP/3. По умолчанию модуль не собирается. Для сборки и работы этого модуля рекомендуется библиотека SSL с поддержкой HTTP/3, например BoringSSL, LibreSSL или QuicTLS. Иначе, при использовании библиотеки OpenSSL, будет использоваться OpenSSL compatibility layer, в котором не поддерживается QUIC early data.
-
--with-http_realip_module
- разрешает сборку модуля ngx_http_realip_module, позволяющего менять адрес клиента на переданный в указанном поле заголовка. По умолчанию модуль не собирается.
-
--with-http_addition_module
- разрешает сборку модуля ngx_http_addition_module, позволяющего добавлять текст до и после ответа. По умолчанию модуль не собирается.
-
--with-http_xslt_module
--with-http_xslt_module=dynamic
- разрешает сборку модуля ngx_http_xslt_module, позволяющего преобразовывать XML-ответ с помощью XSLT-шаблонов. По умолчанию модуль не собирается. Для сборки и работы этого модуля нужны библиотеки libxml2 и libxslt.
-
--with-http_image_filter_module
--with-http_image_filter_module=dynamic
- разрешает сборку модуля ngx_http_image_filter_module, позволяющего преобразовывать изображения в форматах JPEG, GIF, PNG и WebP. По умолчанию модуль не собирается.
-
--with-http_geoip_module
--with-http_geoip_module=dynamic
- разрешает сборку модуля ngx_http_geoip_module, создающего переменные, значения которых зависят от IP-адреса клиента, используя готовые базы данных MaxMind. По умолчанию модуль не собирается.
-
--with-http_sub_module
- разрешает сборку модуля ngx_http_sub_module, позволяющего изменять в ответе одну заданную строку на другую. По умолчанию модуль не собирается.
-
--with-http_dav_module
- разрешает сборку модуля ngx_http_dav_module, предназначенного для автоматизации задач управления файлами на сервере по протоколу WebDAV. По умолчанию модуль не собирается.
-
--with-http_flv_module
- разрешает сборку модуля ngx_http_flv_module, обеспечивающего серверную поддержку псевдо-стриминга для файлов Flash Video (FLV). По умолчанию модуль не собирается.
-
--with-http_mp4_module
- разрешает сборку модуля ngx_http_mp4_module, обеспечивающего серверную поддержку псевдо-стриминга для файлов в формате MP4. По умолчанию модуль не собирается.
-
--with-http_gunzip_module
-
разрешает сборку модуля
ngx_http_gunzip_module,
позволяющего распаковывать ответы с “
Content-Encoding: gzip
” для тех клиентов, которые не поддерживают метод сжатия “gzip”. По умолчанию модуль не собирается. -
--with-http_gzip_static_module
-
разрешает сборку модуля
ngx_http_gzip_static_module,
позволяющего отдавать вместо обычного файла предварительно сжатый файл
с таким же именем и с расширением “
.gz
”. По умолчанию модуль не собирается. -
--with-http_auth_request_module
- разрешает сборку модуля ngx_http_auth_request_module, предоставляющего возможность авторизации клиента, основанной на результате подзапроса. По умолчанию модуль не собирается.
-
--with-http_random_index_module
-
разрешает сборку модуля
ngx_http_random_index_module,
обслуживающего запросы, оканчивающиеся слэшом (‘
/
’), и выдающего случайный файл в качестве индексного файла каталога. По умолчанию модуль не собирается. -
--with-http_secure_link_module
- разрешает сборку модуля ngx_http_secure_link_module. По умолчанию модуль не собирается.
-
--with-http_degradation_module
-
разрешает сборку модуля
ngx_http_degradation_module
. По умолчанию модуль не собирается. -
--with-http_slice_module
- разрешает сборку модуля ngx_http_slice_module, позволяющего разбить запрос на подзапросы, каждый из которых возвращает определённый диапазон ответа. Модуль обеспечивает более эффективное кэширование больших ответов. По умолчанию модуль не собирается.
-
--with-http_stub_status_module
- разрешает сборку модуля ngx_http_stub_status_module, предоставляющего доступ к базовой информации о состоянии сервера. По умолчанию модуль не собирается.
-
--without-http_charset_module
- запрещает сборку модуля ngx_http_charset_module, позволяющего добавлять указанную кодировку в поле “Content-Type” заголовка ответа и перекодировать данные из одной кодировки в другую.
-
--without-http_gzip_module
- запрещает сборку модуля сжатия ответов HTTP-сервера. Для сборки и работы этого модуля нужна библиотека zlib.
-
--without-http_ssi_module
- запрещает сборку модуля ngx_http_ssi_module, обрабатывающего команды SSI (Server Side Includes) в проходящих через него ответах.
-
--without-http_userid_module
- запрещает сборку модуля ngx_http_userid_module, выдающего куки для идентификации клиентов.
-
--without-http_access_module
- запрещает сборку модуля ngx_http_access_module, позволяющего ограничить доступ для определённых адресов клиентов.
-
--without-http_auth_basic_module
- запрещает сборку модуля ngx_http_auth_basic_module, позволяющего ограничить доступ к ресурсам с проверкой имени и пароля пользователя по протоколу “HTTP Basic Authentication”.
-
--without-http_mirror_module
- запрещает сборку модуля ngx_http_mirror_module, позволяющего зеркалировать исходный запрос при помощи создания фоновых зеркалирующих подзапросов.
-
--without-http_autoindex_module
-
запрещает сборку модуля
ngx_http_autoindex_module,
обслуживающего запросы, оканчивающиеся слэшом (‘
/
’), и выдающего листинг каталога, когда модуль ngx_http_index_module не нашёл индексный файл. -
--without-http_geo_module
- запрещает сборку модуля ngx_http_geo_module, позволяющего создавать переменные, значения которых зависят от IP-адреса клиента.
-
--without-http_map_module
- запрещает сборку модуля ngx_http_map_module, позволяющего создавать переменные, значения которых зависят от значений других переменных.
-
--without-http_split_clients_module
- запрещает сборку модуля ngx_http_split_clients_module, позволяющего создавать переменные для A/B тестирования.
-
--without-http_referer_module
- запрещает сборку модуля ngx_http_referer_module, позволяющего блокировать доступ к сайту для запросов с неверными значениями поля “Referer” в заголовке.
-
--without-http_rewrite_module
- запрещает сборку модуля HTTP-сервера, позволяющего делать перенаправления и менять URI запросов. Для сборки и работы этого модуля нужна библиотека PCRE.
-
--without-http_proxy_module
- запрещает сборку проксирующего модуля HTTP-сервера.
-
--without-http_fastcgi_module
- запрещает сборку модуля ngx_http_fastcgi_module, позволяющего передавать запросы FastCGI-серверу.
-
--without-http_uwsgi_module
- запрещает сборку модуля ngx_http_uwsgi_module, позволяющего передавать запросы uwsgi-серверу.
-
--without-http_scgi_module
- запрещает сборку модуля ngx_http_scgi_module, позволяющего передавать запросы SCGI-серверу.
-
--without-http_grpc_module
- запрещает сборку модуля ngx_http_grpc_module, позволяющего передавать запросы gRPC-серверу.
-
--without-http_memcached_module
- запрещает сборку модуля ngx_http_memcached_module, позволяющего получать ответы из сервера memcached.
-
--without-http_limit_conn_module
- запрещает сборку модуля ngx_http_limit_conn_module, позволяющего ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса.
-
--without-http_limit_req_module
- запрещает сборку модуля ngx_http_limit_req_module, позволяющего ограничить скорость обработки запросов по заданному ключу или, как частный случай, скорость обработки запросов, поступающих с одного IP-адреса.
-
--without-http_empty_gif_module
- запрещает сборку модуля, выдающего однопиксельный прозрачный GIF.
-
--without-http_browser_module
- запрещает сборку модуля ngx_http_browser_module, создающего переменные, значения которых зависят от значения поля “User-Agent” в заголовке запроса.
-
--without-http_upstream_hash_module
- запрещает сборку модуля, реализующего метод балансировки нагрузки hash.
-
--without-http_upstream_ip_hash_module
- запрещает сборку модуля, реализующего метод балансировки нагрузки ip_hash.
-
--without-http_upstream_least_conn_module
- запрещает сборку модуля, реализующего метод балансировки нагрузки least_conn.
-
--without-http_upstream_random_module
- запрещает сборку модуля, реализующего метод балансировки нагрузки random.
-
--without-http_upstream_keepalive_module
- запрещает сборку модуля, реализующего кэширование соединений к вышестоящим серверам.
-
--without-http_upstream_zone_module
- запрещает сборку модуля, позволяющего сохранять рабочее состояние группы вышестоящих серверов в разделяемой памяти.
-
--with-http_perl_module
--with-http_perl_module=dynamic
- разрешает сборку модуля, добавляющего встроенный Perl. По умолчанию модуль не собирается.
-
--with-perl_modules_path=
путь
- задаёт каталог, в котором будут находиться файлы модулей Perl.
-
--with-perl=
путь
- задаёт имя исполняемого файла Perl.
-
--http-log-path=
путь
-
задаёт имя основного файла регистрации запросов HTTP-сервера.
После установки имя файла можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы access_log. По умолчанию имя файла —
.префикс
/logs/access.log -
--http-client-body-temp-path=
путь
-
задаёт каталог для хранения временных файлов
с телами запросов клиентов.
После установки имя файла можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы client_body_temp_path. По умолчанию используется каталог
.префикс
/client_body_temp -
--http-proxy-temp-path=
путь
-
задаёт каталог для хранения временных файлов
с данными, полученными от проксируемых серверов.
После установки имя файла можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы proxy_temp_path. По умолчанию используется каталог
.префикс
/proxy_temp -
--http-fastcgi-temp-path=
путь
-
задаёт каталог для хранения временных файлов
с данными, полученными от FastCGI-серверов.
После установки имя файла можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы fastcgi_temp_path. По умолчанию используется каталог
.префикс
/fastcgi_temp -
--http-uwsgi-temp-path=
путь
-
задаёт каталог для хранения временных файлов
с данными, полученными от uwsgi-серверов.
После установки имя файла можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы uwsgi_temp_path. По умолчанию используется каталог
.префикс
/uwsgi_temp -
--http-scgi-temp-path=
путь
-
задаёт каталог для хранения временных файлов
с данными, полученными от SCGI-серверов.
После установки имя файла можно всегда поменять в конфигурационном
файле
nginx.conf
с помощью директивы scgi_temp_path. По умолчанию используется каталог
.префикс
/scgi_temp
-
--without-http
- запрещает HTTP-сервер.
-
--without-http-cache
- запрещает HTTP-кэш.
-
--with-mail
--with-mail=dynamic
- разрешает POP3/IMAP4/SMTP почтовый прокси-сервер.
-
--with-mail_ssl_module
- разрешает сборку модуля для работы почтового прокси-сервера по протоколу SSL/TLS. По умолчанию модуль не собирается. Для сборки и работы этого модуля нужна библиотека OpenSSL.
-
--without-mail_pop3_module
- запрещает протокол POP3 в почтовом прокси-сервере.
-
--without-mail_imap_module
- запрещает протокол IMAP в почтовом прокси-сервере.
-
--without-mail_smtp_module
- запрещает протокол SMTP в почтовом прокси-сервере.
-
--with-stream
--with-stream=dynamic
- разрешает сборку модуля stream для TCP/UDP-проксирования и балансировки. По умолчанию модуль не собирается.
-
--with-stream_ssl_module
- разрешает сборку модуля для работы модуля stream по протоколу SSL/TLS. По умолчанию модуль не собирается. Для сборки и работы этого модуля нужна библиотека OpenSSL.
-
--with-stream_realip_module
- разрешает сборку модуля ngx_stream_realip_module, позволяющего менять адрес клиента на переданный в заголовке протокола PROXY. По умолчанию модуль не собирается.
-
--with-stream_geoip_module
--with-stream_geoip_module=dynamic
- разрешает сборку модуля ngx_stream_geoip_module, создающего переменные, значения которых зависят от IP-адреса клиента, используя готовые базы данных MaxMind. По умолчанию модуль не собирается.
-
--with-stream_ssl_preread_module
- разрешает сборку модуля ngx_stream_ssl_preread_module, позволяющего извлекать информацию из сообщения ClientHello без терминирования SSL/TLS. По умолчанию модуль не собирается.
-
--without-stream_limit_conn_module
- запрещает сборку модуля ngx_stream_limit_conn_module, позволяющего ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса.
-
--without-stream_access_module
- запрещает сборку модуля ngx_stream_access_module, позволяющего ограничить доступ для определённых адресов клиентов.
-
--without-stream_geo_module
- запрещает сборку модуля ngx_stream_geo_module, позволяющего создавать переменные, значения которых зависят от IP-адреса клиента.
-
--without-stream_map_module
- запрещает сборку модуля ngx_stream_map_module, позволяющего создавать переменные, значения которых зависят от значений других переменных.
-
--without-stream_split_clients_module
- запрещает сборку модуля ngx_stream_split_clients_module, позволяющего создавать переменные для A/B тестирования.
-
--without-stream_return_module
- запрещает сборку модуля ngx_stream_return_module, позволяющего отправить заданное значение клиенту и после этого закрыть соединение.
-
--without-stream_set_module
- запрещает сборку модуля ngx_stream_set_module, позволяющего устанавливать значение переменной.
-
--without-stream_upstream_hash_module
- запрещает сборку модуля, реализующего метод балансировки нагрузки hash.
-
--without-stream_upstream_least_conn_module
- запрещает сборку модуля, реализующего метод балансировки нагрузки least_conn.
-
--without-stream_upstream_random_module
- запрещает сборку модуля, реализующего метод балансировки нагрузки random.
-
--without-stream_upstream_zone_module
- запрещает сборку модуля, позволяющего сохранять рабочее состояние группы вышестоящих серверов в разделяемой памяти.
-
--with-google_perftools_module
- разрешает сборку модуля ngx_google_perftools_module, обеспечивающего поддержку профилирования рабочих процессов nginx при помощи Google Performance Tools. Модуль предназначен для разработчиков nginx и не собирается по умолчанию.
-
--with-cpp_test_module
-
разрешает сборку модуля
ngx_cpp_test_module
.
-
--add-module=
путь
- разрешает сборку внешнего модуля.
-
--add-dynamic-module=
путь
- разрешает сборку внешнего динамического модуля.
-
--with-compat
- включает режим совместимости с динамическими модулями.
-
--with-cc=
путь
- задаёт компилятор, который будет использоваться при сборке.
-
--with-cpp=
путь
- задаёт препроцессор, который будет использоваться при сборке.
-
--with-cc-opt=
параметры
-
задаёт дополнительные параметры, которые будут добавлены к переменной CFLAGS.
При использовании системной библиотеки PCRE во FreeBSD, нужно указать
--with-cc-opt="-I /usr/local/include"
. Если нужно увеличить число файлов, с которыми может работатьselect()
, то это тоже можно задать здесь же:--with-cc-opt="-D FD_SETSIZE=2048"
. -
--with-ld-opt=
параметры
-
задаёт дополнительные параметры, которые будут использованы при линковке.
При использовании системной библиотеки PCRE во FreeBSD, нужно указать
--with-ld-opt="-L /usr/local/lib"
. -
--with-cpu-opt=
cpu
-
разрешает сборку для одного из следующих процессоров:
pentium
,pentiumpro
,pentium3
,pentium4
,athlon
,opteron
,sparc32
,sparc64
,ppc64
.
-
--without-pcre
- запрещает использование библиотеки PCRE.
-
--with-pcre
- разрешает использование библиотеки PCRE.
-
--with-pcre=
путь
-
задаёт путь к исходным текстам библиотеки PCRE.
Дистрибутив библиотеки
нужно взять на сайте PCRE
и распаковать.
Всё остальное сделают
./configure
nginx’а иmake
. Библиотека нужна для использования регулярных выражений в директиве location и для модуля ngx_http_rewrite_module. -
--with-pcre-opt=
параметры
- задаёт дополнительные параметры сборки PCRE.
-
--with-pcre-jit
- собирает библиотеку PCRE с поддержкой JIT-компиляции (1.1.12, директива pcre_jit).
-
--without-pcre2
- запрещает использование библиотеки PCRE2 вместо исходной библиотеки PCRE (1.21.5).
-
--with-zlib=
путь
-
задаёт путь к исходным текстам библиотеки zlib.
Дистрибутив библиотеки (версию
1.1.3 — 1.3) нужно взять на сайте
zlib и распаковать.
Всё остальное сделают
./configure
nginx’а иmake
. Библиотека нужна для модуля ngx_http_gzip_module. -
--with-zlib-opt=
параметры
- задаёт дополнительные параметры сборки zlib.
-
--with-zlib-asm=
cpu
-
разрешает использование при сборке библиотеки zlib ассемблерных вставок,
оптимизированных для одного из следующих процессоров:
pentium
,pentiumpro
.
-
--with-libatomic
- разрешает сборку с библиотекой libatomic_ops.
-
--with-libatomic=
путь
- задаёт путь к исходным текстам библиотеки libatomic_ops.
-
--with-openssl=
путь
- задаёт путь к исходным текстам библиотеки OpenSSL.
-
--with-openssl-opt=
параметры
- задаёт дополнительные параметры сборки OpenSSL.
-
--with-debug
- разрешает отладочный лог.
Пример использования параметров (всё это нужно набрать в одной строке):
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre2-10.39 --with-zlib=../zlib-1.3
После конфигурации
nginx компилируется и устанавливается с помощью make
.