Сборка Angie из исходников#
Рекомендуем устанавливать Angie из готовых официальных пакетов. Если вам все же нужна своя сборка:
-
Скачайте архив
.tar.gz
с нашего сайта:$ curl -O https://download.angie.software/files/angie-1.7.0.tar.gz
-
Распакуйте архив и перейдите в каталог с исходными файлами:
$ tar -xpf angie-1.7.0.tar.gz $ cd angie-1.7.0
-
Для подготовки используйте скрипт ./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. |
|
Включает поддержку NTLS в модуле HTTP на стороне сервера, на стороне клиента) и потоковом модуле (на стороне сервера, на стороне клиента) при сборке с библиотекой SSL, поддерживающей NTLS. |
|
Задает путь к исходникам библиотеки zlib. Дистрибутив библиотеки (версию 1.1.3 — 1.2.11) нужно взять на сайте zlib и распаковать. Все остальное сделают команды ./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../libressl/build/include"
--with-ld-opt="-L../libressl/build/lib"
Без этого будет использована библиотека OpenSSL в режиме совместимости, где не поддерживается ранняя отправка данных (early data) и нет других функций, например повторного использования сессий. Такая сборка сможет взаимодействовать только с клиентами и серверами, использующими OpenSSL в том же режиме.
|
Включает сборку модуля XSLT, позволяющего преобразовывать XML-ответ с помощью XSLT-шаблонов. Для этого модуля нужны библиотеки libxml2 и libxslt. |
|
Включает сборку модуля Google PerfTools, обеспечивающего поддержку профилирования рабочих процессов Angie при помощи Google Performance Tools. Модуль предназначен для разработчиков Angie. |
Отключение стандартных модулей:
|
Отключает сборку модуля Access, позволяющего ограничить доступ для определенных адресов клиентов. |
|
Отключает сборку модуля API, включающего HTTP RESTful интерфейс для получения информации о веб-сервере в формате JSON. |
|
Отключает сборку модуля Auth Basic, позволяющего ограничить доступ к ресурсам с проверкой имени и пароля пользователя по протоколу HTTP Basic Authentication. |
|
Отключает сборку модуля AutoIndex, обслуживающего запросы,
оканчивающиеся косой чертой ( |
|
Отключает сборку модуля Browser, создающего переменные, значения
которых зависят от значения поля |
|
Отключает сборку модуля Charset, позволяющего добавлять
указанную кодировку в поле |
|
Отключает сборку модуля, выдающего однопиксельный прозрачный 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. |
|
Отключает сборку модуля, реализующего метод балансировки нагрузки random. |
|
Отключает сборку модуля, реализующего привязку всех запросов внутри клиентской сессии к единственному серверу в апстриме. |
|
Отключает сборку модуля, позволяющего сохранять рабочее состояние апстрима в зоне разделяемой памяти. |
|
Отключает сборку модуля UserID, выдающего куки для идентификации клиентов. |
|
Отключает сборку модуля uWSGI, позволяющего передавать запросы uWSGI-серверу. |
Потоковые модули#
Подключение дополнительных модулей:
|
Включает сборку модуля GeoIP, создающего переменные, значения которых задаются исходя из IP-адреса клиента и готовых баз данных MaxMind. |
|
Включает сборку модуля MQTT Preread, позволяющего извлекать
идентификатор клиента и имя пользователя из пакета |
|
Включает сборку модуля RDP Preread, позволяющего извлекать cookie из сессий по протоколу RDP. |
|
Включает сборку модуля RealIP, позволяющего менять адрес клиента на переданный в заголовке протокола PROXY. |
|
Включает поддержку SSL для потокового сервера. Для этого модуля нужна библиотека OpenSSL. |
|
Включает сборку модуля SSL Preread, позволяющего извлекать информацию из сообщения ClientHello без терминирования SSL/TLS. |
Отключение стандартных модулей:
|
Отключает сборку модуля Geo, позволяющего создавать переменные, значения которых зависят от IP-адреса клиента. |
|
Отключает сборку модуля Limit Conn, позволяющего ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса. |
|
Отключает сборку модуля Map, позволяющего создавать переменные, значения которых зависят от значений других переменных. |
|
Отключает сборку модуля Return, позволяющего отправить заданное значение клиенту и после этого закрыть соединение. |
|
Отключает сборку модуля Set, позволяющего устанавливать значение переменной. |
|
Отключает сборку модуля Split Clients, позволяющего создавать переменные для A/B-тестирования. |
|
Отключает сборку модуля, реализующего метод балансировки нагрузки hash. |
|
Отключает сборку модуля, реализующего метод балансировки нагрузки least_conn. |
|
Отключает сборку модуля, реализующего метод балансировки нагрузки random. |
|
Отключает сборку модуля, позволяющего сохранять рабочее состояние апстрима в зоне разделяемой памяти. |
Почтовые модули#
Подключение дополнительных модулей:
|
Включает поддержку SSL для почтового сервера. Для этого модуля нужна библиотека OpenSSL. |
Отключение стандартных модулей:
Прочие параметры#
|
Разрешает сборку внешнего модуля по указанному пути. |
|
Разрешает сборку внешнего динамического модуля по указанному пути. |
|
Включает режим совместимости с динамическими модулями. При включении Angie может загружать и использовать динамические модули, которые были собраны для той же версии Angie, даже если эти модули были собраны с другими параметрами. |
|
Задает компилятор, который будет использоваться при сборке. |
|
Задает препроцессор, который будет использоваться при сборке. |
|
Задает дополнительные параметры, которые будут добавлены в
переменную |
|
Задает дополнительные параметры, которые будут использованы при
компоновке. При использовании системной библиотеки 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 \ # Каталог установки для Angie
--sbin-path=/usr/sbin/angie \ # Путь к бинарному файлу Angie
--conf-path=/etc/angie/angie.conf \ # Путь к основному конфигурационному файлу
--pid-path=/run/angie.pid \ # Путь к файлу 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 \ # Включает модуль SSL для HTTPS
--with-http_v2_module \ # Включает поддержку HTTP/2 для улучшения производительности
--with-http_realip_module \ # Позволяет Angie правильно обрабатывать заголовки X-Real-IP и X-Forwarded-For
--with-http_gzip_static_module \ # Обслуживает предварительно сжатые файлы .gz для уменьшения нагрузки на процессор
--with-http_stub_status_module \ # Предоставляет страницу статуса
--with-threads \ # Включает пула потоков для повышения производительности при высокой нагрузке
--with-file-aio \ # Включает асинхронный ввод/вывод
--with-stream \ # Включает функциональность прокси TCP/UDP
--with-stream_ssl_module \ # Добавляет поддержку SSL/TLS для прокси TCP/UDP
--with-pcre=../pcre2-10.40 \ # Указывает путь к библиотеке PCRE для поддержки регулярных выражений
--with-pcre-jit \ # Включает компиляцию "на лету" для PCRE
--with-zlib=../zlib-1.3 \ # Указывает путь к библиотеке zlib для сжатия
--with-openssl=../openssl-3.0.8 \ # Указывает путь к библиотеке OpenSSL для SSL/TLS
--with-openssl-opt="enable-ec_nistp_64_gcc_128" \ # Оптимизирует OpenSSL для 64-битных кривых NIST
--add-module=../ngx_brotli \ # Добавляет сторонний модуль ngx_brotli для поддержки сжатия Brotli
--add-dynamic-module=../ngx_cache_purge # Добавляет сторонний модуль ngx_cache_purge для управления кэшем