Сборка Angie из исходников#
Рекомендуем устанавливать Angie из готовых официальных пакетов. Если вам все же нужна своя сборка:
Скачайте архив
.tar.gz
с нашего сайта:$ curl -O https://download.angie.software/files/angie-1.8.2.tar.gz
Распакуйте архив и перейдите в каталог с исходными файлами:
$ tar -xpf angie-1.8.2.tar.gz $ cd angie-1.8.2
Для подготовки используйте скрипт ./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 ассемблерные вставки,
оптимизированные для одного из следующих процессоров: |
Включение и отключение модулей#
Вы можете отключить модули, включенные по умолчанию, или включить модули,
которые по умолчанию доступны, но отключены. Подключение дополнительных модулей: Включает сборку модуля 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 в том же режиме. Включает сборку модуля 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
без терминации TLS. Отключение стандартных модулей: Отключает сборку модуля Geo,
позволяющего создавать переменные, значения которых зависят от IP-адреса
клиента. Отключает сборку модуля Limit Conn, позволяющего ограничить
число соединений по заданному ключу, в частности, число соединений с
одного IP-адреса. Отключает сборку модуля Map,
позволяющего создавать переменные, значения которых зависят от значений
других переменных. Отключает сборку модуля Return, позволяющего отправить
заданное значение клиенту и после этого закрыть соединение. Отключает сборку модуля Set,
позволяющего устанавливать значение переменной. Отключает сборку модуля Split Clients, позволяющего создавать
переменные для A/B-тестирования. Отключает сборку модуля, реализующего метод балансировки нагрузки
hash. Отключает сборку модуля, реализующего метод балансировки нагрузки
least_conn. Отключает сборку модуля, реализующего метод балансировки нагрузки
random. Отключает сборку модуля, позволяющего сохранять рабочее состояние
апстрима в зоне разделяемой памяти. Подключение дополнительных модулей: Включает поддержку SSL для
почтового сервера. Для этого модуля нужна библиотека OpenSSL. Отключение стандартных модулей: Разрешает сборку внешнего модуля по указанному пути. Разрешает сборку внешнего динамического модуля по указанному пути. Включает режим совместимости с динамическими модулями. При включении
Angie может загружать и использовать динамические модули, которые были
собраны для той же версии Angie, даже если эти модули были собраны с
другими параметрами. Задает компилятор, который будет использоваться при сборке. Задает препроцессор, который будет использоваться при сборке. Задает дополнительные параметры, которые будут добавлены в
переменную Задает дополнительные параметры, которые будут использованы при
компоновке. При использовании системной библиотеки PCRE во FreeBSD
следует указать Разрешает оптимизировать сборку для одного из следующих процессоров:
HTTP#
--with-http_acme_module
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module
--with-http_degradation_module
location
.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_module
Content-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"
--with-http_xslt_module
, --with-http_xslt_module=dynamic
--with-google_perftools_module
--without-http
- Отключает HTTP-сервер.#--without-http_access_module
--without-http_api_module
--without-http_auth_basic_module
--without-http_autoindex_module
/
), и выдающего листинг каталога,
когда модуль Index не нашел
индексный файл.--without-http_browser_module
User-Agent
в заголовке запроса.--without-http_charset_module
Content-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_module
Referer
в
заголовке.--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_geoip_module
, --with-stream_geoip_module=dynamic
--with-stream_mqtt_preread_module
CONNECT
протокола MQTT версий 3.1.1
и 5.0.--with-stream_rdp_preread_module
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--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 \ # Каталог установки для 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 для управления кэшем