Сборка Angie из исходников#

Рекомендуем устанавливать Angie из пакетов. Если вам все же нужна своя сборка:

  1. Скачайте архив .tar.gz с нашего сайта:

    $ curl -O https://download.angie.software/files/angie-1.6.0.tar.gz
    
  2. Распакуйте архив и перейдите в каталог с исходными файлами:

    $ tar -xpf angie-1.6.0.tar.gz
    $ cd angie-1.6.0
    
  3. Для подготовки используйте скрипт configure, который определяет характеристики ОС, где производится сборка, в частности методы, доступные Angie при обработке соединений. После успешного запуска скрипт создает файл Makefile.

    Перед запуском configure изучите и выберите нужные параметры:

    $ ./configure <ПАРАМЕТРЫ>
    
  4. Получив Makefile, скомпилируйте и установите Angie:

    $ make
    $ make install
    

Параметры сборки#

Общие#

Параметр

Умолчание

--help
печатает справочное сообщение.

--user=имя
задает имя непривилегированного пользователя, с правами которого будут выполняться рабочие процессы. После установки это имя можно всегда поменять в конфигурационном файле angie.conf с помощью директивы user.

nobody

--group=имя
задает имя группы, с правами которой будут выполняться рабочие процессы. После установки это имя можно всегда поменять в конфигурационном файле angie.conf с помощью директивы user.

совпадает с именем непривилегированного пользователя

--build=имя
задает необязательное имя сборки Angie.

--builddir=путь
задает каталог для сборки.

objs

Пути#

Параметр

Умолчание

--prefix=путь
задает каталог, в котором будут находиться файлы сервера. Этот же каталог будет использоваться для всех относительных путей, задаваемых configure (кроме путей к исходным текстам библиотек) и в конфигурационном файле angie.conf.

/usr/local/angie

--sbin-path=путь
задает имя исполняемого файла Angie. Это имя используется только на стадии установки.

<префикс>/sbin/angie

--modules-path=путь
задает каталог, в который будут устанавливаться динамические модули.

<префикс>/modules

--conf-path=путь
задает имя конфигурационного файла angie.conf. При желании Angie можно всегда запустить с другим конфигурационным файлом, указав его в параметре командной строки -c файл.

<префикс>/conf/angie.conf

--error-log-path=путь
задает имя основного файла ошибок, предупреждений и диагностики. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы error_log.

<префикс>/logs/error.log

--pid-path=путь
задает имя файла angie.pid, в котором будет храниться номер главного процесса. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы pid.

<префикс>/logs/angie.pid

--lock-path=путь
задает префикс имен файлов блокировок. После установки значение можно всегда поменять в конфигурационном файле angie.conf с помощью директивы lock_file.

<префикс>/logs/angie.lock

--http-acme-client-path=path
задает каталог для хранения сертификатов и ключей блоков server, в которых заданы директивы acme.

<префикс>/acme_client

--http-log-path=путь
задает имя основного файла регистрации запросов HTTP-сервера. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы access_log.

<префикс>/logs/access.log

--http-client-body-temp-path=путь
задает каталог для хранения временных файлов с телами запросов клиентов. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы client_body_temp_path.

<префикс>/client_body_temp

--http-proxy-temp-path=путь
задает каталог для хранения временных файлов с данными, полученными от проксируемых серверов. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы proxy_temp_path.

<префикс>/proxy_temp

--http-fastcgi-temp-path=путь
задает каталог для хранения временных файлов с данными, полученными от FastCGI-серверов. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы fastcgi_temp_path.

<префикс>/fastcgi_temp

--http-uwsgi-temp-path=путь
задает каталог для хранения временных файлов с данными, полученными от uwsgi-серверов. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы uwsgi_temp_path.

<префикс>/uwsgi_temp

--http-scgi-temp-path=путь
задает каталог для хранения временных файлов с данными, полученными от SCGI-серверов. После установки имя файла можно всегда поменять в конфигурационном файле angie.conf с помощью директивы scgi_temp_path.

<префикс>/scgi_temp

Функциональность и зависимости#

--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-debug
разрешает вести отладочный лог.

--without-http-cache
запрещает HTTP-кэш.

--with-pcre
разрешает использование библиотеки PCRE.
--with-pcre=путь
задает путь к исходным текстам библиотеки PCRE. Дистрибутив библиотеки нужно взять на сайте PCRE и распаковать. Все остальное сделают ./configure Angie и make. Библиотека нужна для использования регулярных выражений в директиве location и для модуля http_rewrite.
--with-pcre-opt=параметры
задает дополнительные параметры сборки PCRE.
--with-pcre-jit
собирает библиотеку PCRE с поддержкой JIT-компиляции (директива pcre_jit).

--without-pcre
запрещает использование библиотеки PCRE.

--without-pcre2
запрещает использование библиотеки PCRE2 вместо исходной библиотеки PCRE.

--with-libatomic
разрешает сборку с библиотекой libatomic_ops.
--with-libatomic=путь
задает путь к исходным текстам библиотеки libatomic_ops.

--with-openssl=путь
включает статическую сборку и задает путь к исходным текстам библиотеки OpenSSL.
--with-openssl-opt=параметры
задает дополнительные параметры сборки OpenSSL.

--with-ntls
включает серверную и клиентскую поддержку NTLS в HTTP и stream (server-side, client_side при сборке с NTLS-enabled SSL библиотекой.

--with-zlib=путь
задает путь к исходным текстам библиотеки zlib. Дистрибутив библиотеки (версию 1.1.3 — 1.2.11) нужно взять на сайте zlib и распаковать. Все остальное сделают ./configure Angie и make. Библиотека нужна для модуля http_gzip.
--with-zlib-opt=параметры
задает дополнительные параметры сборки zlib.
--with-zlib-asm=cpu
разрешает использование при сборке библиотеки zlib ассемблерных вставок, оптимизированных для одного из следующих процессоров: pentium, pentiumpro.

Модули Angie#

http#

Подключение дополнительных модулей#

--with-http_acme_module
разрешает сборку модуля http_acme, который включает протокол ACME.

--with-http_addition_module
разрешает сборку модуля http_addition, позволяющего добавлять текст до и после ответа.

--with-http_auth_request_module
разрешает сборку модуля http_auth_request, предоставляющего возможность авторизации клиента, основанной на результате подзапроса.

--with-http_dav_module
разрешает сборку модуля http_dav, предназначенного для автоматизации задач управления файлами на сервере по протоколу WebDAV.

--with-http_degradation_module
разрешает сборку модуля ngx_http_degradation_module.

--with-http_flv_module
разрешает сборку модуля http_flv, обеспечивающего серверную поддержку псевдо-стриминга для файлов Flash Video (FLV).

--with-http_geoip_module / --with-http_geoip_module=dynamic
разрешает сборку модуля http_geoip, создающего переменные, значения которых зависят от IP-адреса клиента, используя готовые базы данных MaxMind.

--with-http_gunzip_module
разрешает сборку модуля http_gunzip, позволяющего распаковывать ответы с «Content-Encoding: gzip» для тех клиентов, которые не поддерживают метод сжатия gzip.

--with-http_gzip_static_module
разрешает сборку модуля http_gzip_static, позволяющего отдавать вместо обычного файла предварительно сжатый файл с таким же именем и с расширением «.gz».

--with-http_image_filter_module / --with-http_image_filter_module=dynamic
разрешает сборку модуля http_image_filter, позволяющего преобразовывать изображения в форматах JPEG, GIF, PNG и WebP.

--with-http_mp4_module
разрешает сборку модуля http_mp4, обеспечивающего серверную поддержку псевдо-стриминга для файлов в формате MP4.

--with-http_perl_module / --with-http_perl_module=dynamic
разрешает сборку модуля, добавляющего встроенный Perl.
--with-perl_modules_path=путь
задает каталог, в котором будут находиться файлы модулей Perl.
--with-perl=путь
задает имя исполняемого файла Perl.

--with-http_random_index_module
разрешает сборку модуля http_random_index, обслуживающего запросы, оканчивающиеся косой чертой (/), и выдающего случайный файл в качестве индексного файла каталога.

--with-http_realip_module
разрешает сборку модуля http_realip, позволяющего менять адрес клиента на переданный в указанном поле заголовка.

--with-http_secure_link_module
разрешает сборку модуля http_secure_link.

--with-http_slice_module
разрешает сборку модуля http_slice, позволяющего разбить запрос на подзапросы, каждый из которых возвращает определенный диапазон ответа. Модуль обеспечивает более эффективное кэширование больших ответов.

--with-http_ssl_module
разрешает сборку модуля для работы HTTP-сервера по протоколу HTTPS.
Для сборки и работы этого модуля нужна библиотека OpenSSL.

--with-http_stub_status_module
разрешает сборку модуля http_stub_status, предоставляющего доступ к базовой информации о состоянии сервера.

--with-http_sub_module
разрешает сборку модуля http_sub, позволяющего изменять в ответе одну заданную строку на другую.

--with-http_v2_module
разрешает сборку модуля для работы HTTP-сервера по протоколу HTTP/2.

--with-http_v3_module
разрешает сборку модуля для работы HTTP-сервера по протоколу HTTP/3.

Примечание

Для сборки настоятельно рекомендуется использовать библиотеку SSL, поддерживающую протокол QUIC:

Сборка с BoringSSL:

./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../boringssl/include"
--with-ld-opt="-L../boringssl/build/ssl
                -L../boringssl/build/crypto"

Без этого будет использована библиотека OpenSSL в режиме совместимости, где не поддерживается ранняя отправка данных (early data) и нет других функций, например повторного использования сессий. Такая сборка сможет взаимодействовать только с клиентами и серверами, использующими OpenSSL в том же режиме.

--with-http_xslt_module / --with-http_xslt_module=dynamic
разрешает сборку модуля http_xslt, позволяющего преобразовывать XML-ответ с помощью XSLT-шаблонов.
Для сборки и работы этого модуля нужны библиотеки libxml2 и libxslt.

--with-google_perftools_module
разрешает сборку модуля google_perftools, обеспечивающего поддержку профилирования рабочих процессов Angie при помощи Google Performance Tools. Модуль предназначен для разработчиков Angie.

Отключение стандартных модулей#

--without-http
запрещает HTTP сервер.

--without-http_access_module
запрещает сборку модуля http_access, позволяющего ограничить доступ для определенных адресов клиентов.

--without-http_api_module
запрещает сборку модуля API, включающего HTTP RESTful интерфейс для получения информации о веб-сервере в формате JSON.

--without-http_auth_basic_module
запрещает сборку модуля http_auth_basic, позволяющего ограничить доступ к ресурсам с проверкой имени и пароля пользователя по протоколу «HTTP Basic Authentication».

--without-http_autoindex_module
запрещает сборку модуля http_autoindex, обслуживающего запросы, оканчивающиеся косой чертой (/), и выдающего листинг каталога, когда модуль http_index не нашел индексный файл.

--without-http_browser_module
запрещает сборку модуля http_browser, создающего переменные, значения которых зависят от значения поля «User-Agent» в заголовке запроса.

--without-http_charset_module
запрещает сборку модуля http_charset, позволяющего добавлять указанную кодировку в поле «Content-Type» заголовка ответа и перекодировать данные из одной кодировки в другую.

--without-http_empty_gif_module
запрещает сборку модуля, выдающего однопиксельный прозрачный GIF.

--without-http_fastcgi_module
запрещает сборку модуля http_fastcgi, позволяющего передавать запросы FastCGI-серверу.

--without-http_geo_module
запрещает сборку модуля http_geo, позволяющего создавать переменные, значения которых зависят от IP-адреса клиента.

--without-http_gzip_module
запрещает сборку модуля сжатия ответов HTTP-сервера. Для сборки и работы этого модуля нужна библиотека zlib.

--without-http_grpc_module
запрещает сборку модуля http_grpc, позволяющего передавать запросы gRPC-серверу.

--without-http_limit_conn_module
запрещает сборку модуля http_limit_conn, позволяющего ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса.

--without-http_limit_req_module
запрещает сборку модуля http_limit_req, позволяющего ограничить скорость обработки запросов по заданному ключу или, как частный случай, скорость обработки запросов, поступающих с одного IP-адреса.

--without-http_map_module
запрещает сборку модуля http_map, позволяющего создавать переменные, значения которых зависят от значений других переменных.

--without-http_memcached_module
запрещает сборку модуля http_memcached, позволяющего получать ответы из сервера memcached.

--without-http_mirror_module
запрещает сборку модуля http_mirror, позволяющего зеркалировать исходный запрос при помощи создания фоновых зеркалирующих подзапросов.

--without-http_prometheus_module
запрещает сборку модуля Prometheus HTTP-сервера.

--without-http_proxy_module
запрещает сборку проксирующего модуля HTTP-сервера.

--without-http_referer_module
запрещает сборку модуля http_referer, позволяющего блокировать доступ к сайту для запросов с неверными значениями поля «Referer» в заголовке.

--without-http_rewrite_module
запрещает сборку модуля HTTP-сервера, позволяющего делать перенаправления и менять URI запросов. Для сборки и работы этого модуля нужна библиотека PCRE.

--without-http_scgi_module
запрещает сборку модуля http_scgi, позволяющего передавать запросы SCGI-серверу.

--without-http_split_clients_module
запрещает сборку модуля http_split_clients, позволяющего создавать переменные для A/B тестирования.

--without-http_ssi_module
запрещает сборку модуля http_ssi, обрабатывающего команды SSI (Server Side Includes) в проходящих через него ответах.

--without-http_upstream_hash_module
запрещает сборку модуля, реализующего метод балансировки нагрузки hash.

--without-http_upstream_ip_hash_module
запрещает сборку модуля, реализующего метод балансировки нагрузки ip_hash.

--without-http_upstream_keepalive_module
запрещает сборку модуля, реализующего кэширование соединений к вышестоящим серверам.

--without-http_upstream_least_conn_module
запрещает сборку модуля, реализующего метод балансировки нагрузки least_conn.

--without-http_upstream_random_module
запрещает сборку модуля, реализующего метод балансировки нагрузки random.

--without-http_upstream_sticky_module
запрещает сборку модуля, реализующего привязку всех запросов внутри клиентской сессии к единственному серверу в группе upstream.

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

--without-http_userid_module
запрещает сборку модуля http_userid, выдающего куки для идентификации клиентов.

--without-http_uwsgi_module
запрещает сборку модуля http_uwsgi, позволяющего передавать запросы uwsgi-серверу.

stream#

Подключение дополнительных модулей#

--with-stream / --with-stream=dynamic
разрешает сборку модуля stream для TCP/UDP-проксирования и балансировки.

--with-stream_geoip_module / --with-stream_geoip_module=dynamic
разрешает сборку модуля stream_geoip, создающего переменные, значения которых зависят от IP-адреса клиента, используя готовые базы данных MaxMind.

--with-stream_mqtt_preread_module
разрешает сборку модуля stream_mqtt_preread, позволяющего извлекать идентификатор клиента и имя пользователя из пакета CONNECT протокола MQTT версий 3.1.1 и 5.0.

--with-stream_rdp_preread_module
разрешает сборку модуля stream_rdp_preread, позволяющего извлекать cookie из сессий по протоколу RDP.

--with-stream_realip_module
разрешает сборку модуля stream_realip, позволяющего менять адрес клиента на переданный в заголовке протокола PROXY.

--with-stream_ssl_module
разрешает сборку модуля для работы модуля stream по протоколу SSL/TLS. Для сборки и работы этого модуля нужна библиотека OpenSSL.

--with-stream_ssl_preread_module
разрешает сборку модуля stream_ssl_preread, позволяющего извлекать информацию из сообщения ClientHello без терминирования SSL/TLS.

Отключение стандартных модулей#

--without-stream_access_module
запрещает сборку модуля stream_access, позволяющего ограничить доступ для определенных адресов клиентов.

--without-stream_geo_module
запрещает сборку модуля stream_geo, позволяющего создавать переменные, значения которых зависят от IP-адреса клиента.

--without-stream_limit_conn_module
запрещает сборку модуля stream_limit_conn, позволяющего ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса.

--without-stream_map_module
запрещает сборку модуля stream_map, позволяющего создавать переменные, значения которых зависят от значений других переменных.

--without-stream_return_module
запрещает сборку модуля stream_return, позволяющего отправить заданное значение клиенту и после этого закрыть соединение.

--without-stream_set_module
запрещает сборку модуля stream_set, позволяющего устанавливать значение переменной.

--without-stream_split_clients_module
запрещает сборку модуля stream_split_clients, позволяющего создавать переменные для A/B тестирования.

--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
запрещает сборку модуля, позволяющего сохранять рабочее состояние группы вышестоящих серверов в разделяемой памяти.

mail#

Подключение дополнительных модулей#

--with-mail / --with-mail=dynamic
разрешает POP3/IMAP4/SMTP почтовый прокси.

--with-mail_ssl_module
разрешает сборку модуля для работы почтового прокси-сервера по протоколу SSL/TLS. Для сборки и работы этого модуля нужна библиотека OpenSSL.

Отключение стандартных модулей#

--without-mail_imap_module
запрещает протокол IMAP в почтовом прокси-сервере.

--without-mail_pop3_module
запрещает протокол POP3 в почтовом прокси-сервере.

--without-mail_smtp_module
запрещает протокол SMTP в почтовом прокси-сервере.

Параметры компиляции#

--with-cpp_test_module
разрешает сборку модуля ngx_cpp_test_module.

--add-module=путь
разрешает сборку внешнего модуля.

--add-dynamic-module=путь
разрешает сборку внешнего динамического модуля.

--with-compat
включает режим совместимости с динамическими модулями.

--with-cc=путь
задает компилятор, который будет использоваться при сборке.

--with-cpp=путь
задает препроцессор, который будет использоваться при сборке.

‑‑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.

Пример использования параметров#

./configure \
     --sbin-path=/usr/sbin/angie \
     --conf-path=/etc/angie/angie.conf \
     --pid-path=/run/angie.pid \
     --with-http_ssl_module \
     --with-pcre=../pcre2-10.40 \
     --with-zlib=../zlib-1.3