Конфигурационные файлы#
Angie использует текстовый конфигурационный файл. По умолчанию этот файл
называется angie.conf
и находится в соответствии с параметром сборки
--conf-path, обычно в директории /etc/angie
.
Конфигурационный файл обычно состоит из следующих контекстов:
events
— Общая обработка соединенийhttp
— HTTP-трафикmail
— Почтовый трафикstream
— TCP- и UDP-трафикwasm_modules
– среда выполнения WASM
Директивы, размещенные вне этих контекстов, считаются находящимися в
контексте main
:
user angie; # директива в контексте 'main'
events {
# конфигурация обработки соединений
}
http {
# Конфигурация трафика HTTP, для всех вложенных виртуальных серверов
server {
# конфигурация виртуального HTTP сервера 1
location /one {
# конфигурация обработки HTTP запросов с URI, начинающимися с '/one'
}
location /two {
# конфигурация обработки HTTP запросов с URI, начинающимися с '/two'
}
}
server {
# конфигурация виртуального HTTP сервера 2
}
}
stream {
# Конфигурация трафика TCP/UDP, для всех вложенных виртуальных серверов
server {
# конфигурация виртуального TCP сервера 1
}
}
Для упрощения управления конфигурацией рекомендуется использовать директиву
include в основном файле angie.conf
, чтобы ссылаться на содержимое
файлов, специфичных для функций:
include /etc/angie/http.d/*.conf;
include /etc/angie/stream.d/*.conf;
Наследование#
В общем случае дочерний контекст (тот, который содержится в другом контексте, который считается родительским) унаследует настройки директив, определенных на уровне родителя. Некоторые директивы могут появляться в нескольких контекстах; в таких случаях вы можете переопределить настройки, унаследованные от родителя, включив директиву в дочерний контекст.
Синтаксис#
Единицы измерения#
Размеры могут быть указаны в байтах (без суффикса), килобайтах (суффиксы
k
и K
) или мегабайтах (суффиксы m
и M
),
например, "1024"
(байт), "8k"
, "1m"
.
Интервалы времени могут быть указаны в миллисекундах, секундах, минутах, часах, днях и так далее, с использованием следующих суффиксов:
|
Миллисекунды |
|
Секунды |
|
Минуты |
|
Часы |
|
Дни |
|
Недели |
|
Месяцы (принято считать равными 30 дням) |
|
Годы (принято считать равными 365 дням) |
Несколько единиц могут быть объединены в одном значении, указывая их в порядке
от наиболее значимого к наименее значимому, при необходимости разделяя
пробелами. Например, "1h 30m"
обозначает тот же промежуток времени, что
и "90m"
или "5400s"
. Значение без суффикса интерпретируется как
секунды. Рекомендуется всегда указывать суффикс.
Некоторые интервалы времени могут быть указаны только с разрешением в секундах.
Директивы#
Каждая директива состоит из имени и набора параметров. Если какая-либо часть директивы должна содержать пробелы, они должна быть заключены в кавычки или экранированы:
add_header X-MyHeader "foo bar";
add_header X-MyHeader foo\ bar;
Если именованный параметр требует пробелов и вы используете кавычки, его имя также должно быть заключено в кавычки:
server example.com "sid=server 1";
Настройка хэшей#
Для эффективной обработки статических наборов данных, таких как имена серверов, значения директивы map, MIME-типы и имена заголовков запросов, Angie использует хэш-таблицы. При запуске и каждом переопределении конфигурации Angie определяет оптимальный размер для этих хэш-таблиц, чтобы размер корзины, которая хранит ключи с одинаковыми хэш-значениями, не превышал заданный параметр (hash bucket size). Размер таблицы измеряется в корзинах и корректируется до тех пор, пока не превысит параметр hash max size. Большинство хэш-таблиц имеют соответствующие директивы для настройки этих параметров, такие как server_names_hash_max_size и server_names_hash_bucket_size для имен серверов.
Параметр hash bucket size выравнивается по кратности размера линии кэша процессора. Такое выравнивание улучшает эффективность поиска ключей на современных процессорах, уменьшая количество обращений к памяти. Если hash bucket size равен размеру одной линии кэша, максимальное количество обращений к памяти во время поиска ключа будет два: одно для вычисления адреса корзины и второе для поиска внутри корзины. Поэтому, если Angie сообщает, что следует увеличить либо hash max size, либо hash bucket size, начните с увеличения hash max size.
Перезагрузка конфигурации#
Чтобы применить изменения в конфигурационном файле, его необходимо перезагрузить. Вы можете либо перезапустить процесс Angie с предварительной проверкой синтаксиса конфигурации:
$ sudo angie -t && sudo service angie restart
Либо перезагрузить службу, чтобы применить новую конфигурацию без прерывания обработки текущих запросов:
$ sudo angie -t && sudo service angie reload