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 |
| Kilobytes |
| Megabytes |
| 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:
| Milisegundos |
| Segundos |
| Minutos |
| Horas |
| Días |
| Semanas |
| Meses (se asume igual a 30 días) |
| 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. 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: Alternativamente, puede recargar el servicio para aplicar la nueva configuración sin
interrumpir el procesamiento de solicitudes actuales:Recarga de Configuración#
$ sudo angie -t && sudo service angie restart
$ sudo angie -t && sudo service angie reload