Сборка Angie из исходников#
Рекомендуем устанавливать Angie из готовых официальных пакетов. Если вам все же нужна своя сборка, сначала убедитесь, что выполнены необходимые требования.
Примечание
Для сборки Angie нужны компилятор C (gcc или clang) и make, а также библиотеки PCRE2, zlib и OpenSSL. Установите пакеты для разработки из вашего дистрибутива. В Debian и Ubuntu:
$ sudo apt install build-essential libpcre2-dev zlib1g-dev libssl-dev
В RHEL, Fedora и производных:
$ sudo dnf install gcc make pcre2-devel zlib-devel openssl-devel
Либо соберите эти библиотеки статически вместе с Angie с помощью параметров
--with-pcre=, --with-zlib= и
--with-openssl=, показанных в примерах.
Чтобы собрать Angie из исходников:
Скачайте архив
.tar.gzс нашего сайта:$ VERSION="1.12.1" $ curl -O "https://download.angie.software/files/angie-$VERSION.tar.gz"
Распакуйте архив и перейдите в каталог с исходными файлами:
$ tar -xpf angie-1.12.1.tar.gz $ cd angie-1.12.1
Для подготовки используйте скрипт ./configure, который определяет характеристики ОС, где производится сборка, в частности методы, доступные Angie при обработке соединений. После успешного запуска скрипт создает файл
Makefile.Если требования выполнены, для минимальной сборки параметры не нужны:
$ ./configureИначе изучите и укажите нужные параметры сборки для модулей и библиотек, которые вам нужны (см. примеры):
$ ./configure <ПАРАМЕТРЫ>
Получив
Makefile,соберите и установите Angie:$ make $ make install
Параметры сборки#
Общие#
Параметр | Описание | Умолчание |
|---|---|---|
| Печатает справочное сообщение. | |
| Задает имя непривилегированного пользователя, с правами которого будут
выполняться рабочие процессы. После установки это имя можно
поменять в конфигурационном файле |
|
| Задает имя группы, с правами которой будут выполняться рабочие процессы.
После установки это имя можно поменять в конфигурационном файле
| Значение |
| Задает необязательное имя сборки. | |
| Задает каталог для сборки. |
|
| Задает каталог для кэширования артефактов сборки. | Если параметр задан без пути — значение |
Пути#
Параметр | Описание | Умолчание |
|---|---|---|
| Задает каталог, в котором будут находиться файлы сервера. Этот же каталог
будет использоваться для всех относительных путей, задаваемых
./configure (кроме путей к исходникам библиотек) и в
файле конфигурации |
|
| Задает имя исполняемого файла Angie. Это имя используется только на стадии установки. |
|
| Задает каталог, куда будут устанавливаться динамические модули. |
|
| Задает имя файла конфигурации |
|
| Задает имя основного файла ошибок, предупреждений и диагностики. После
установки имя файла можно поменять в конфигурационном файле
|
|
| Задает имя файла |
|
| Задает префикс имен файлов блокировок. После установки значение можно
всегда поменять в конфигурационном файле |
|
| Задает каталог для хранения сертификатов и ключей блоков |
|
| Задает имя основного файла регистрации запросов HTTP-сервера. После
установки имя файла можно поменять в конфигурационном файле
|
|
| Задает каталог для хранения временных файлов с телами запросов клиентов.
После установки имя файла можно поменять в конфигурационном файле
|
|
| Задает каталог для хранения временных файлов с данными, полученными от
проксируемых серверов. После установки имя файла можно поменять в
конфигурационном файле |
|
| Задает каталог для хранения временных файлов с данными, полученными от
FastCGI-серверов. После установки имя файла можно поменять в
конфигурационном файле |
|
| Задает каталог для хранения временных файлов с данными, полученными от
uWSGI-серверов. После установки имя файла можно поменять в
конфигурационном файле |
|
| Задает каталог для хранения временных файлов с данными, полученными от
SCGI-серверов. После установки имя файла можно поменять в
конфигурационном файле |
|
Функции и зависимости#
| Разрешает или Отключает сборку модуля для работы сервера с помощью метода
|
| Разрешает или Отключает сборку модуля для работы сервера с помощью метода
|
| Разрешает использовать пулы потоков
(режим |
| Разрешает использовать файловый асинхронный ввод-вывод (AIO)
во FreeBSD и Linux (режим |
| Разрешает вести отладочный лог. |
| Запрещает HTTP-кэш. |
| Разрешает использование библиотеки PCRE. Необязательный параметр задает путь к исходникам библиотеки PCRE. Дистрибутив библиотеки нужно взять на сайте PCRE и распаковать. Все остальное сделают команды ./configure и make в Angie. Библиотека нужна для использования регулярных выражений в директиве
|
| Задает дополнительные параметры сборки PCRE. |
| Собирает библиотеку PCRE с поддержкой JIT-компиляции (директива pcre_jit). |
| Запрещает использование библиотеки PCRE. |
| Запрещает использование библиотеки PCRE2 вместо исходной библиотеки PCRE. |
| Разрешает сборку с библиотекой libatomic_ops. Необязательный параметр задает путь к исходникам библиотеки. |
| Включает статическую сборку и задает путь к исходникам библиотеки OpenSSL. В качестве OpenSSL-совместимой библиотеки можно использовать AWS-LC. |
| Задает дополнительные параметры сборки OpenSSL. |
| Включает поддержку NTLS в модуле HTTP на стороне сервера, на стороне клиента) и потоковом модуле (на стороне сервера, на стороне клиента) при сборке с библиотекой SSL, поддерживающей NTLS. |
| Задает путь к исходникам библиотеки zlib. Дистрибутив библиотеки (версию 1.1.3 или новее) нужно взять на сайте zlib и распаковать; версии старше текущей находятся в архиве zlib fossils. Все остальное сделают команды ./configure и make в Angie. Библиотека нужна для модуля GZip. |
| Задает дополнительные параметры сборки zlib. |
| Разрешает использовать для сборки zlib ассемблерные вставки,
оптимизированные для одного из следующих процессоров: |
Включение и отключение модулей#
Вы можете отключить модули, включенные по умолчанию, или включить модули, которые по умолчанию доступны, но отключены.
HTTP#
Подключение дополнительных модулей:
| Включает сборку модуля ACME, который включает протокол ACME. |
| Включает сборку модуля Addition, позволяющего добавлять текст до и после ответа. |
| Включает сборку модуля Auth Request, предоставляющего возможность авторизации клиента, основанной на результате подзапроса. |
| Включает сборку модуля DAV, предназначенного для автоматизации задач управления файлами на сервере по протоколу WebDAV. |
| Включает сборку модуля Degradation, который позволяет возвращать коды состояния
HTTP 204 или 444 для определенных Этот модуль может использоваться только в случаях, когда |
| Включает сборку модуля FLV, обеспечивающего серверную поддержку псевдо-стриминга для файлов Flash Video (FLV). |
| Включает сборку модуля GeoIP, создающего переменные, значения которых задаются исходя из IP-адреса клиента и готовых баз данных MaxMind. |
| Включает сборку модуля GunZIP, позволяющего распаковывать
ответы с |
| Включает сборку модуля Gzip Static, позволяющего отдавать
вместо обычного файла предварительно сжатый файл с таким же именем и с
расширением |
| Включает сборку модуля Image Filter, позволяющего преобразовывать изображения в форматах JPEG, GIF, PNG и WebP. |
| Включает сборку модуля MP4, обеспечивающего серверную поддержку псевдо-стриминга для файлов в формате MP4. |
| Включает сборку модуля Perl. |
| Задает каталог, в котором будут находиться файлы модулей Perl. |
| Задает имя исполняемого файла Perl. |
| Включает сборку модуля Random Index, обслуживающего запросы,
оканчивающиеся косой чертой ( |
| Включает сборку модуля RealIP, позволяющего менять адрес клиента на переданный в указанном поле заголовка. |
| Включает сборку модуля Secure Link. |
| Включает сборку модуля Slice, позволяющего разбить запрос на подзапросы, каждый из которых возвращает определенный диапазон ответа. Модуль обеспечивает эффективное кэширование больших ответов. |
| Включает поддержку SSL для HTTP-сервера. Для этого модуля нужна библиотека OpenSSL. |
| Включает сборку модуля Stub Status, предоставляющего доступ к базовой информации о состоянии сервера. |
| Включает сборку модуля Sub, позволяющего изменять в ответе одну заданную строку на другую. |
| Включает модуль HTTP/2. |
| Включает модуль 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"
Сборка с LibreSSL:
$ ./configure \
--with-debug \
--with-http_v3_module \
--with-cc-opt="-I../libressl/build/include" \
--with-ld-opt="-L../libressl/build/lib"
Сборка с QuicTLS:
$ ./configure \
--with-debug \
--with-http_v3_module \
--with-cc-opt="-I../quictls/build/include" \
--with-ld-opt="-L../quictls/build/lib"
Без этого будет использована библиотека OpenSSL в режиме совместимости, где не поддерживается ранняя отправка данных (early data) и нет других функций, например повторного использования сессий. Такая сборка сможет взаимодействовать только с клиентами и серверами, использующими OpenSSL в том же режиме.
Этот переход к запасному варианту происходит без предупреждения: если
исходники указанной библиотеки SSL отсутствуют или непригодны,
./configure использует системный OpenSSL вместо того, чтобы
сообщить об ошибке. После его завершения проверьте Configuration
summary: строка + using system OpenSSL library означает, что
нужная библиотека с поддержкой QUIC не была задействована.
| Включает сборку модуля XSLT, позволяющего преобразовывать XML-ответ с помощью XSLT-шаблонов. Для этого модуля нужны библиотеки libxml2 и libxslt. |
| Включает сборку модуля Google PerfTools, обеспечивающего поддержку профилирования рабочих процессов Angie при помощи Google Performance Tools. Модуль предназначен для разработчиков Angie. |
Отключение стандартных модулей:
| Отключает HTTP-сервер. |
| Отключает сборку модуля Access, позволяющего ограничить доступ для определенных адресов клиентов. |
| Отключает сборку модуля API, включающего HTTP RESTful интерфейс для получения информации о веб-сервере в формате JSON. |
| Отключает сборку модуля Metric. |
| Отключает сборку модуля Auth Basic, позволяющего ограничить доступ к ресурсам с проверкой имени и пароля пользователя по протоколу HTTP Basic Authentication. |
| Отключает сборку модуля AutoIndex, обслуживающего запросы,
оканчивающиеся косой чертой ( |
| Отключает сборку модуля Browser, создающего переменные, значения
которых зависят от значения поля |
| Отключает сборку модуля Charset, позволяющего добавлять
указанную кодировку в поле |
| Отключает сборку модуля DoH, реализующего сервер DNS over HTTPS. |
| Отключает сборку модуля, выдающего однопиксельный прозрачный GIF. |
| Отключает сборку модуля FastCGI, позволяющего передавать запросы FastCGI-серверу. |
| Отключает сборку модуля Geo, позволяющего создавать переменные, значения которых зависят от IP-адреса клиента. |
| Отключает сборку модуля для сжатия ответов HTTP-сервера. Для этого модуля нужна библиотека zlib. |
| Отключает сборку модуля gRPC, позволяющего передавать запросы gRPC-серверу. |
| Отключает сборку модуля Limit Conn, позволяющего ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса. |
| Отключает сборку модуля Limit Req, позволяющего ограничить скорость обработки запросов по заданному ключу и, в частности, скорость обработки запросов, поступающих с одного IP-адреса. |
| Отключает сборку модуля Map, позволяющего создавать переменные, значения которых зависят от значений других переменных. |
| Отключает сборку модуля Memcached, позволяющего получать ответы из сервера memcached. |
| Отключает сборку модуля Mirror, позволяющего зеркалировать исходный запрос путем создания фоновых зеркалирующих подзапросов. |
| Отключает сборку модуля Prometheus для HTTP-сервера. |
| Запрещает сборку модуля Proxy для HTTP-сервера. |
| Отключает сборку модуля Referer, позволяющего блокировать доступ
к сайту для запросов с неверными значениями поля |
| Запрещает сборку модуля Rewrite HTTP-сервера, позволяющего делать перенаправления и менять URI запросов. Для этого модуля нужна библиотека PCRE. |
| Отключает сборку модуля SCGI, позволяющего передавать запросы SCGI-серверу. |
| Отключает сборку модуля Split Clients, позволяющего создавать переменные для A/B-тестирования. |
| Отключает сборку модуля SSI, обрабатывающего команды SSI (Server Side Includes) в проходящих через него ответах. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки hash. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки ip_hash. |
| Отключает сборку модуля, реализующего кэширование соединений к вышестоящим серверам. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки least_conn. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки least_time. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки random. |
| Отключает сборку модуля, реализующего привязку всех запросов внутри клиентской сессии к единственному серверу в апстриме. |
| Отключает сборку модуля, позволяющего сохранять рабочее состояние апстрима в зоне разделяемой памяти. |
| Отключает сборку модуля UserID, выдающего куки для идентификации клиентов. |
| Отключает сборку модуля uWSGI, позволяющего передавать запросы uWSGI-серверу. |
Потоковые модули#
Подключение дополнительных модулей:
| Включает сборку модуля ACME, который включает протокол ACME. |
| Включает сборку модуля GeoIP, создающего переменные, значения которых задаются исходя из IP-адреса клиента и готовых баз данных MaxMind. |
| Включает сборку модуля MQTT Preread, позволяющего извлекать
идентификатор клиента и имя пользователя из пакета |
| Включает сборку модуля RDP Preread, позволяющего извлекать cookie из сессий по протоколу RDP. |
| Включает сборку модуля RealIP, позволяющего менять адрес клиента на переданный в заголовке протокола PROXY. |
| Включает поддержку SSL для потокового сервера. Для этого модуля нужна библиотека OpenSSL. |
| Включает сборку модуля SSL Preread, позволяющего извлекать информацию из сообщения ClientHello без терминации TLS. |
| Включает ICMP echo проверки для директивы upstream_probe (PRO). Требуется поддержка ICMP в ОС. |
Отключение стандартных модулей:
| Отключает сборку модуля Geo, позволяющего создавать переменные, значения которых зависят от IP-адреса клиента. |
| Отключает сборку модуля Limit Conn, позволяющего ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса. |
| Отключает сборку модуля Map, позволяющего создавать переменные, значения которых зависят от значений других переменных. |
| Отключает сборку модуля Return, позволяющего отправить заданное значение клиенту и после этого закрыть соединение. |
| Отключает сборку модуля Set, позволяющего устанавливать значение переменной. |
| Отключает сборку модуля Split Clients, позволяющего создавать переменные для A/B-тестирования. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки hash. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки least_conn. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки least_time. |
| Отключает сборку модуля, реализующего метод балансировки нагрузки random. |
| Отключает сборку модуля, позволяющего сохранять рабочее состояние апстрима в зоне разделяемой памяти. |
Почтовые модули#
Подключение дополнительных модулей:
| Включает поддержку SSL для почтового сервера. Для этого модуля нужна библиотека OpenSSL. |
Отключение стандартных модулей:
Прочие параметры#
| Разрешает сборку внешнего модуля по указанному пути. |
| Разрешает сборку внешнего динамического модуля по указанному пути. |
| Включает режим совместимости с динамическими модулями. При включении Angie может загружать и использовать динамические модули, которые были собраны для той же версии Angie, даже если эти модули были собраны с другими параметрами. Angie PRO загружает только модули, собранные для Angie PRO; модули Angie (OSS) отклоняются из-за другой сигнатуры модуля. |
| Задает компилятор, который будет использоваться при сборке. |
| Задает препроцессор, который будет использоваться при сборке. |
| Задает дополнительные параметры, которые будут добавлены в
переменную |
| Задает дополнительные параметры, которые будут использованы при
компоновке. При использовании системной библиотеки PCRE во FreeBSD
следует указать |
| Разрешает оптимизировать сборку для одного из следующих процессоров:
|
Примеры#
Простая сборка с поддержкой HTTPS. Эта базовая конфигурация включает поддержку HTTPS с использованием SSL/TLS и необходимыми зависимостями (PCRE для регулярных выражений, zlib для сжатия и OpenSSL для SSL/TLS):
$ ./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 \
--with-openssl=../openssl-3.0.8
Сборка с оптимизацией производительности. Эта конфигурация оптимизирована для производительности, включая поддержку HTTP/2, статическое сжатие gzip, JIT для PCRE и асинхронный ввод-вывод; также включены пулы потоков для эффективной обработки высоких нагрузок:
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-pcre=../pcre2-10.40 \
--with-pcre-jit \
--with-zlib=../zlib-1.3 \
--with-threads \
--with-file-aio
Балансировщик нагрузки с проксированием TCP/UDP. Эта конфигурация настраивает балансировщик нагрузки как для HTTP, так и для не-HTTP сервисов:
$ ./configure \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--with-stream \
--with-stream_ssl_module \
--with-pcre=../pcre2-10.40 \
--with-zlib=../zlib-1.3
Специализированная сборка. Эта конфигурация включает HTTPS, HTTP/2, сжатие, улучшенную безопасность и производительность, а также дополнительные модули для сжатия Brotli и управления кэшем, оптимизированные как для HTTP, так и для проксирования TCP/UDP:
$ ./configure \
--prefix=/usr/local/angie \
--sbin-path=/usr/sbin/angie \
--conf-path=/etc/angie/angie.conf \
--pid-path=/run/angie.pid \
--lock-path=/var/lock/angie.lock \
--error-log-path=/var/log/angie/error.log \
--http-log-path=/var/log/angie/access.log \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-threads \
--with-file-aio \
--with-stream \
--with-stream_ssl_module \
--with-pcre=../pcre2-10.40 \
--with-pcre-jit \
--with-zlib=../zlib-1.3 \
--with-openssl=../openssl-3.0.8 \
--with-openssl-opt="enable-ec_nistp_64_gcc_128" \
--add-module=../ngx_brotli \
--add-dynamic-module=../ngx_cache_purge
Параметры --add-module и --add-dynamic-module выше
ссылаются на исходники сторонних модулей, которые вы скачиваете отдельно.
Например, клонируйте их рядом с деревом исходников Angie:
$ git clone --recurse-submodules https://github.com/google/ngx_brotli
$ git clone https://github.com/nginx-modules/ngx_cache_purge
Список модулей, которые упаковывает Angie, и их исходники см. в разделе Сторонние модули.