Конфигурационные файлы#

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".

Интервалы времени могут быть указаны в миллисекундах, секундах, минутах, часах, днях и так далее, с использованием следующих суффиксов:

ms

Миллисекунды

s

Секунды

m

Минуты

h

Часы

d

Дни

w

Недели

M

Месяцы (принято считать равными 30 дням)

y

Годы (принято считать равными 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