Сборка 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 можно всегда запустить с другим конфигурационным файлом, указав его в параметре командной строки . По умолчанию файл называется префикс /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_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_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_upstream_hash_module запрещает сборку модуля, реализующего метод балансировки нагрузки hash. —without-stream_upstream_least_conn_module запрещает сборку модуля, реализующего метод балансировки нагрузки least_conn. —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. Дистрибутив библиотеки (версию 4.4 — 8.43) нужно взять на сайте PCRE и распаковать. Всё остальное сделают ./configure nginx’а и make . Библиотека нужна для использования регулярных выражений в директиве location и для модуля ngx_http_rewrite_module. —with-pcre-opt= параметры задаёт дополнительные параметры сборки PCRE. —with-pcre-jit собирает библиотеку PCRE с поддержкой JIT-компиляции (1.1.12, директива pcre_jit).
—with-zlib= путь задаёт путь к исходным текстам библиотеки zlib. Дистрибутив библиотеки (версию 1.1.3 — 1.2.11) нужно взять на сайте 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.
Пример использования параметров (всё это нужно набрать в одной строке):
После конфигурации nginx компилируется и устанавливается с помощью make .