Сборка 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.11.7" $ curl -O "https://download.angie.software/files/angie-$VERSION.tar.gz"
Распакуйте архив и перейдите в каталог с исходными файлами:
$ tar -xpf angie-1.11.7.tar.gz $ cd angie-1.11.7
Для подготовки используйте скрипт ./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 ассемблерные вставки,
оптимизированные для одного из следующих процессоров: |
Включение и отключение модулей#
Вы можете отключить модули, включенные по умолчанию, или включить модули,
которые по умолчанию доступны, но отключены. Подключение дополнительных модулей: Включает сборку модуля 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: Сборка с LibreSSL: Сборка с QuicTLS: Без этого будет использована библиотека OpenSSL в режиме совместимости, где не
поддерживается ранняя отправка данных (early data) и нет
других функций, например повторного использования сессий. Такая
сборка сможет взаимодействовать только с клиентами и серверами,
использующими OpenSSL в том же режиме. Этот переход к запасному варианту происходит без предупреждения: если
исходники указанной библиотеки SSL отсутствуют или непригодны,
./configure использует системный OpenSSL вместо того, чтобы
сообщить об ошибке. После его завершения проверьте Включает сборку модуля 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, позволяющего добавлять
указанную кодировку в поле Отключает сборку модуля, выдающего однопиксельный прозрачный 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-серверу. Подключение дополнительных модулей: Включает сборку модуля 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. Отключает сборку модуля, реализующего метод балансировки нагрузки
random. Отключает сборку модуля, позволяющего сохранять рабочее состояние
апстрима в зоне разделяемой памяти. Подключение дополнительных модулей: Включает поддержку SSL для
почтового сервера. Для этого модуля нужна библиотека OpenSSL. Отключение стандартных модулей: Разрешает сборку внешнего модуля по указанному пути. Разрешает сборку внешнего динамического модуля по указанному пути. Включает режим совместимости с динамическими модулями. При включении
Angie может загружать и использовать динамические модули, которые были
собраны для той же версии Angie, даже если эти модули были собраны с
другими параметрами. Angie PRO загружает только модули, собранные для
Angie PRO; модули Angie (OSS) отклоняются из-за другой сигнатуры модуля. Задает компилятор, который будет использоваться при сборке. Задает препроцессор, который будет использоваться при сборке. Задает дополнительные параметры, которые будут добавлены в
переменную Задает дополнительные параметры, которые будут использованы при
компоновке. При использовании системной библиотеки PCRE во FreeBSD
следует указать Разрешает оптимизировать сборку для одного из следующих процессоров:
HTTP#
--with-http_acme_module--with-http_addition_module--with-http_auth_request_module--with-http_dav_module--with-http_degradation_modulelocation.sbrk(0)
показывает фактическое количество памяти, выделенной процессом. Другими
словами, модуль работает на FreeBSD до версии 7.0 по умолчанию. Начиная с
версии 7.0, он работает только если установлено
MALLOC_OPTIONS=Dm. На Linux он не работает.--with-http_flv_module--with-http_geoip_module, --with-http_geoip_module=dynamic--with-http_gunzip_moduleContent-Encoding: gzip для клиентов, которые не
поддерживают метод сжатия gzip.--with-http_gzip_static_module.gz.--with-http_image_filter_module,
--with-http_image_filter_module=dynamic--with-http_mp4_module--with-http_perl_module, --with-http_perl_module=dynamic--with-perl_modules_path=путь--with-perl=путь--with-http_random_index_module/), и выдающего случайный файл в
качестве индексного файла каталога.--with-http_realip_module--with-http_secure_link_module--with-http_slice_module--with-http_ssl_module--with-http_stub_status_module--with-http_sub_module--with-http_v2_module--with-http_v3_module$ ./configure \
--with-debug \
--with-http_v3_module \
--with-cc-opt="-I../boringssl/include" \
--with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto"
$ ./configure \
--with-debug \
--with-http_v3_module \
--with-cc-opt="-I../libressl/build/include" \
--with-ld-opt="-L../libressl/build/lib"
$ ./configure \
--with-debug \
--with-http_v3_module \
--with-cc-opt="-I../quictls/build/include" \
--with-ld-opt="-L../quictls/build/lib"
Configuration
summary: строка + using system OpenSSL library означает, что
нужная библиотека с поддержкой QUIC не была задействована.--with-http_xslt_module, --with-http_xslt_module=dynamic--with-google_perftools_module--without-http--without-http_access_module--without-http_api_module--without-http_metric_module--without-http_auth_basic_module--without-http_autoindex_module/), и выдающего листинг каталога,
когда модуль Index не нашел
индексный файл.--without-http_browser_moduleUser-Agent в заголовке запроса.--without-http_charset_moduleContent-Type заголовка ответа и
перекодировать данные из одной кодировки в другую.--without-http_empty_gif_module--without-http_fastcgi_module--without-http_geo_module--without-http_gzip_module--without-http_grpc_module--without-http_limit_conn_module--without-http_limit_req_module--without-http_map_module--without-http_memcached_module--without-http_mirror_module--without-http_prometheus_module--without-http_proxy_module--without-http_referer_moduleReferer в
заголовке.--without-http_rewrite_module--without-http_scgi_module--without-http_split_clients_module--without-http_ssi_module--without-http_upstream_hash_module--without-http_upstream_ip_hash_module--without-http_upstream_keepalive_module--without-http_upstream_least_conn_module--without-http_upstream_random_module--without-http_upstream_sticky_module--without-http_upstream_zone_module--without-http_userid_module--without-http_uwsgi_moduleПотоковые модули#
--with-stream, --with-stream=dynamic
- Разрешает сборку базового модуля Stream для TCP/UDP-проксирования и
балансировки.#--with-stream_acme_module--with-stream_geoip_module, --with-stream_geoip_module=dynamic--with-stream_mqtt_preread_moduleCONNECT
протокола MQTT версий 3.1.1
и 5.0.--with-stream_rdp_preread_module--with-stream_realip_module--with-stream_ssl_module--with-stream_ssl_preread_module--with-stream_upstream_probe_icmp (PRO)--without-stream_access_module
- Отключает сборку модуля Access, позволяющего ограничить доступ
для определенных адресов клиентов.#--without-stream_geo_module--without-stream_limit_conn_module--without-stream_map_module--without-stream_return_module--without-stream_set_module--without-stream_split_clients_module--without-stream_upstream_hash_module--without-stream_upstream_least_conn_module--without-stream_upstream_random_module--without-stream_upstream_zone_moduleПочтовые модули#
--with-mail, --with-mail=dynamic
- Разрешает сборку базового модуля Mail,
поддерживающего POP3, IMAP4, and SMTP.#--with-mail_ssl_moduleПрочие параметры#
--with-cpp_test_module
- Включает сборку модуля CPP Test. Модуль используется в основном для
разработки и тестирования и не предназначен для использования в
производственной среде.#--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=параметры‑‑with‑ld‑opt="‑L /usr/local/lib".--with-cpu-opt=cpupentium, pentiumpro, pentium3, pentium4,
athlon, opteron, sparc32, sparc64,
ppc64.
Примеры#
Простая сборка с поддержкой 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, и их исходники см. в разделе Сторонние модули.