Archivos de Configuración#

Angie utiliza un archivo de configuración basado en texto. Por defecto, este archivo se llama angie.conf y se ubica según el parámetro de compilación --conf-path, típicamente en el directorio /etc/angie.

Un archivo de configuración generalmente consiste en los siguientes contextos:

  • events – Procesamiento general de conexiones

  • http – Tráfico HTTP

  • mail – Tráfico de correo

  • stream – Tráfico TCP y UDP

  • wasm_modules – Entorno de ejecución WASM

Las directivas que se colocan fuera de estos contextos se consideran dentro del contexto main:

user angie; # directiva en el contexto 'main'

events {

    # configuración del procesamiento de conexiones
}

http {

    # Configuración específica de HTTP que afecta a todos los servidores virtuales

    server {

        # configuración del servidor virtual HTTP 1
        location /one {

            # configuración para procesar URIs que comienzan con '/one'
        }
        location /two {

            # configuración para procesar URIs que comienzan con '/two'
        }
    }

    server {

        # configuración del servidor virtual HTTP 2
    }
}

stream {

    # Configuración específica de TCP/UDP que afecta a todos los servidores virtuales
    server {

        # configuración del servidor virtual TCP 1
    }
}

Para simplificar la gestión de la configuración, se recomienda usar la directiva include en el archivo principal angie.conf para referenciar el contenido de archivos específicos por funcionalidad:

include /etc/angie/http.d/*.conf;
include /etc/angie/stream.d/*.conf;

Herencia#

En general, un contexto hijo (uno que está contenido dentro de otro contexto, que se considera su padre) hereda las configuraciones de las directivas definidas en el nivel padre. Algunas directivas pueden aparecer en múltiples contextos; en tales casos, puede sobrescribirse la configuración heredada del padre incluyendo la directiva en el contexto hijo.

Sintaxis#

Unidades de Medida#

Puede especificar tamaños utilizando las siguientes unidades:

Sin sufijo

Bytes

k, K

Kilobytes

m, M

Megabytes

g, G

Gigabytes

Por ejemplo: 1024, 8k, 1m, 16g.

Los intervalos de tiempo pueden especificarse en milisegundos, segundos, minutos, horas, días, y así sucesivamente, usando los siguientes sufijos:

ms

Milisegundos

s

Segundos

m

Minutos

h

Horas

d

Días

w

Semanas

M

Meses (se asume igual a 30 días)

y

Años (se asume igual a 365 días)

Se pueden combinar varias unidades en un solo valor especificándolas en orden, de la más significativa a la menos significativa, opcionalmente separadas por espacios. Por ejemplo, "1h 30m" especifica la misma duración que "90m" o "5400s". Un valor sin sufijo se interpreta como segundos. Se recomienda siempre especificar un sufijo.

Algunos intervalos de tiempo solo pueden especificarse con resolución en segundos.

Directivas#

Cada directiva consiste en un nombre y un conjunto de parámetros. Si alguna parte de una directiva necesita contener espacios, debe colocarse entre comillas o escapando los espacios:

add_header X-MyHeader "foo bar";
add_header X-MyHeader foo\ bar;

Si un parámetro con nombre necesita espacios y se usan comillas, su nombre también debe colocarse entre comillas:

server example.com "sid=server 1";

Configuración de Hashes#

Para procesar de manera eficiente conjuntos estáticos de datos, como nombres de servidores, valores de la directiva map, tipos MIME y nombres de cabeceras de solicitudes, Angie utiliza tablas hash. Durante el arranque y en cada reconfiguración, Angie determina el tamaño óptimo de estas tablas hash para asegurar que el tamaño de cada bucket, que almacena claves con valores hash idénticos, no exceda el parámetro configurado (hash bucket size). El tamaño de la tabla se mide en buckets y se ajusta hasta que supera el parámetro hash max size. La mayoría de las tablas hash tienen directivas correspondientes para ajustar estos parámetros, como server_names_hash_max_size y server_names_hash_bucket_size para nombres de servidores.

El parámetro hash bucket size se alinea a un múltiplo del tamaño de la línea de caché del procesador. Esta alineación mejora la eficiencia de la búsqueda de claves en procesadores modernos al reducir el número de accesos a memoria. Si el hash bucket size es igual al tamaño de una línea de caché, el número máximo de accesos a memoria durante la búsqueda de una clave será dos: uno para calcular la dirección del bucket y otro para buscar dentro del bucket. Por lo tanto, si Angie indica que se debe aumentar el hash max size o el hash bucket size, se recomienda comenzar aumentando el hash max size.

Recarga de Configuración#

Para aplicar cambios al archivo de configuración, este debe recargarse. Puede reiniciar el proceso de Angie con una verificación previa de la sintaxis de la configuración:

$ sudo angie -t && sudo service angie restart

Alternativamente, puede recargar el servicio para aplicar la nueva configuración sin interrumpir el procesamiento de solicitudes actuales:

$ sudo angie -t && sudo service angie reload