Módulo Core#
El módulo proporciona la funcionalidad esencial y las directivas de configuración
necesarias para la operación básica del servidor, y gestiona tareas críticas
como la gestión de procesos de trabajo, la configuración de modelos orientados
a eventos y el procesamiento de conexiones y solicitudes entrantes.
Incluye directivas clave para configurar el proceso principal, el registro de errores
y el control del comportamiento del servidor a bajo nivel. Cuando Nota No es necesario habilitar Si accept_mutex está habilitado, esta directiva especifica el tiempo máximo
que un proceso de trabajo esperará para continuar aceptando nuevas conexiones
mientras otro proceso de trabajo ya está manejando las nuevas conexiones. Determina si Angie debe ejecutarse como un demonio.
Esto se utiliza principalmente durante el desarrollo. Habilita los registros de depuración para conexiones de clientes específicas.
Otras conexiones utilizarán el nivel de registro
establecido por la directiva error_log.
Puede especificar conexiones por dirección IPv4 o IPv6, red o nombre de host.
Para conexiones que utilicen sockets de dominio UNIX,
utilice el parámetro Nota Para que esta directiva funcione, Angie debe estar compilada con el
registro de depuración habilitado. Esta directiva se utiliza para depuración. Cuando ocurre un error interno, como una fuga de socket durante los reinicios del proceso de trabajo, habilitar Por defecto, Angie elimina todas las variables de entorno heredadas de su proceso padre
excepto la variable Estas variables son entonces: heredadas durante una
actualización en vivo de un archivo ejecutable utilizadas por el módulo Perl disponibles para los procesos de trabajo Tenga en cuenta que controlar las bibliotecas del sistema de esta manera puede no ser siempre efectivo,
ya que las bibliotecas a menudo verifican las variables solo durante la inicialización,
que ocurre antes de que esta directiva surta efecto.
La variable Ejemplo: Nota La variable de entorno Predeterminado main, http, mail, stream, server, location Configura el registro de logs,
permitiendo especificar múltiples logs en el mismo nivel de configuración.
Si no se define explícitamente un archivo de log en el nivel de configuración El primer parámetro especifica el archivo donde almacenar el log.
El valor especial El segundo parámetro establece el nivel de registro, que puede ser uno de los siguientes:
Configuración Niveles Capturados Si este parámetro se omite, se usa
Nota Para que el nivel de registro Proporciona el contexto del archivo de configuración para directivas
que afectan al procesamiento de conexiones. Incluye otro archivo, o archivos que coincidan con la máscara especificada,
en la configuración.
Los archivos incluidos deben contener directivas y bloques sintácticamente correctos. Ejemplo: Carga un módulo dinámico desde el archivo especificado.
Si se proporciona una ruta relativa, se interpreta según la
opción de compilación Ejemplo: Predeterminado main Angie utiliza un mecanismo de bloqueo para implementar accept_mutex
y serializar el acceso a la memoria compartida.
En la mayoría de los sistemas, los bloqueos se gestionan mediante operaciones atómicas,
lo que hace innecesaria esta directiva.
En ciertos sistemas, sin embargo, se utiliza un mecanismo alternativo de `archivo de bloqueo`.
Esta directiva establece un prefijo para los nombres de archivos de bloqueo. Determina si se inician procesos de trabajo.
Esta directiva está destinada para desarrolladores de Angie. Un proceso de trabajo aceptará todas las nuevas conexiones simultáneamente. Un proceso de trabajo aceptará una nueva conexión a la vez. Nota Esta directiva se ignora
si se utiliza el método de procesamiento de conexiones kqueue,
ya que proporciona el número de nuevas conexiones listas para ser aceptadas. Habilita o deshabilita la "compilación just-in-time" (PCRE JIT)
para expresiones regulares conocidas en el momento del análisis de la configuración. La PCRE JIT puede acelerar significativamente el procesamiento de expresiones regulares. Nota JIT está disponible en las bibliotecas PCRE desde la versión 8.20,
siempre que se haya compilado con la opción de configuración Predeterminado main Especifica el archivo que almacenará el ID del proceso principal de Angie.
El archivo se crea atómicamente, lo que garantiza que su contenido siempre sea correcto.
La opción Nota Si se modifica el valor de file durante la reconfiguración
pero apunta a un enlace simbólico del PID anterior,
el archivo no se volverá a crear. Especifica el nombre del acelerador de hardware SSL. Predeterminado main Si está habilitado, los objetos SSL (certificados SSL, claves secretas, certificados CA de confianza,
listas CRL) se heredan a través de las recargas de configuración. Los objetos SSL cargados desde archivos se heredan si su tiempo de modificación e índice
de archivo no han cambiado desde la carga de configuración anterior. Las claves secretas
especificadas como Los objetos SSL cargados desde variables no pueden heredarse. Ejemplo: Predeterminado main Define el name y los parámetros de un grupo de hilos
utilizado para la lectura y envío de archivos multihilo
(sin bloqueo), para los procesos de trabajo. El parámetro Si todos los hilos del grupo están ocupados ejecutando tareas, las nuevas tareas esperan en una cola.
El parámetro Reduce la resolución del temporizador en los procesos de trabajo,
reduciendo así el número de llamadas al sistema Ejemplo: La implementación interna del intervalo depende del método utilizado: Especifica el método a utilizar para el procesamiento de conexiones.
Normalmente no hay necesidad de especificarlo explícitamente,
porque Angie utilizará por defecto el método más eficiente. Predeterminado main Define las credenciales de usuario y grupo utilizadas por los procesos de trabajo
(también ver parámetros de compilación).
Si se omite grupo, se utiliza un grupo cuyo nombre es igual al de usuario. Cuando se utiliza aio con el método de procesamiento de conexiones epoll,
establece el número máximo de operaciones de E/S asíncronas pendientes
para un solo proceso de trabajo. Establece el número máximo de conexiones simultáneas que puede abrir un proceso de trabajo. Debe tenerse en cuenta que este número incluye todas las conexiones
(por ejemplo, conexiones con servidores proxy, entre otras),
no solo las conexiones con clientes.
Otra consideración es que el número real de conexiones simultáneas
no puede exceder el límite actual del número máximo de archivos abiertos,
que puede cambiarse mediante worker_rlimit_nofile. Predeterminado — main Vincula los procesos de trabajo a conjuntos de CPUs.
Cada conjunto de CPU está representado por una máscara de bits de CPUs permitidas.
Debe definirse un conjunto separado para cada uno de los procesos de trabajo.
Por defecto, los procesos de trabajo no están vinculados a ninguna CPU específica. Por ejemplo: Esta configuración vincula cada proceso de trabajo a una CPU separada. Alternativamente: Esto vincula el primer proceso de trabajo a CPU0 y CPU2,
y el segundo proceso de trabajo a CPU1 y CPU3.
Esta configuración es adecuada para hyper-threading. El valor especial El parámetro opcional de máscara puede utilizarse para limitar las CPUs
disponibles para la vinculación automática: Nota La directiva solo está disponible en FreeBSD y Linux. Define la prioridad de planificación para los procesos de trabajo, tal como lo hace el comando nice: un número negativo
significa mayor prioridad.
El rango permitido normalmente varía de -20 a 20. Ejemplo: Define el número de procesos de trabajo. El valor óptimo depende de muchos factores, incluyendo (pero no limitado a)
el número de núcleos de CPU, el número de discos duros que almacenan datos,
y el patrón de carga.
En caso de duda, establecerlo al número de núcleos de CPU disponibles
sería un buen inicio (el valor " Cambia el límite del tamaño máximo de un archivo core ( Cambia el límite del número máximo de archivos abiertos ( Configura un tiempo de espera en segundos para un apagado ordenado de los procesos de trabajo.
Cuando el tiempo especificado expira, Angie intentará cerrar todas las conexiones actualmente abiertas
para facilitar el apagado. El apagado ordenado se inicia enviando una señal QUIT al proceso principal, que indica a los procesos de trabajo
que dejen de aceptar nuevas conexiones y permite que las conexiones existentes se completen.
Los procesos de trabajo continúan manejando las solicitudes activas hasta que finalicen,
y luego se apagan de manera ordenada. Si las conexiones permanecen abiertas
más tiempo que Define el directorio de trabajo actual para un proceso de trabajo.
Se utiliza principalmente al escribir un archivo de volcado de memoria (core file),
en cuyo caso un proceso de trabajo debe tener permiso de escritura para el
directorio especificado.Ejemplo de Configuración#
user www www;
worker_processes 2;
error_log /var/log/error.log info;
events {
use kqueue; worker_connections 2048;
}
Directivas#
accept_mutex#
accept_mutex
está habilitado, los procesos de trabajo aceptarán
nuevas conexiones por turno. Sin esta opción, todos los procesos de trabajo son
notificados de nuevas conexiones, lo que puede conducir a un uso ineficiente de los
recursos del sistema si el volumen de conexiones nuevas es bajo.accept_mutex
en sistemas
que admiten la bandera EPOLLEXCLUSIVE
o cuando se utiliza la directiva reuseport.accept_mutex_delay#
daemon#
debug_connection#
unix:
para habilitar los registros de depuración.events {
debug_connection 127.0.0.1;
debug_connection localhost;
debug_connection 192.0.2.0/24;
debug_connection ::1;
debug_connection 2001:0db8::/32;
debug_connection unix:;
# ...
}
debug_points#
debug_points
creará un archivo core (abort
) o detendrá el proceso (stop
) para un análisis posterior con un depurador del sistema.env#
TZ
.
Esta directiva le permite conservar algunas variables heredadas, modificar sus valores
o crear nuevas variables de entorno.TZ
siempre se hereda
y es accesible para el módulo Perl
a menos que se configure explícitamente lo contrario.env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;
ANGIE
se utiliza internamente por Angie
y no debe ser establecida directamente por el usuario.error_log#
error_log
file [level];error_log logs/error.log error;
(la ruta depende de la opción de compilación --error-log-path
build option)main
,
se utilizará el archivo predeterminado.stderr
selecciona la salida de error estándar.
Para configurar el registro en syslog,
utilice el prefijo "syslog:"
.
Para registrar en un buffer cíclico de memoria,
utilice el prefijo "memory:"
seguido del tamaño del buffer;
esto se utiliza típicamente para depuración.debug
, info
, notice
, warn
, error
,
crit
, alert
, o emerg
.
Estos niveles están listados en orden de gravedad creciente.
Establecer un nivel de log capturará mensajes de igual y mayor gravedad:debug
debug
, info
, notice
, warn
, error
,
crit
, alert
, emerg
info
info
, notice
, warn
, error
,
crit
, alert
, emerg
notice
notice
, warn
, error
,
crit
, alert
, emerg
warn
warn
, error
, crit
, alert
, emerg
error
error
, crit
, alert
, emerg
crit
crit
, alert
, emerg
alert
alert
, emerg
emerg
emerg
error
como nivel de registro predeterminado.debug
funcione,
Angie debe estar compilada con el registro de depuración
habilitado.events#
include#
include mime.types;
include vhosts/*.conf;
load_module#
--prefix
build option. Para verificar la ruta:$ sudo angie -V
load_module modules/ngx_mail_module.so;
lock_file#
lock_file
file;lock_file logs/angie.lock;
(la ruta depende de la opción de compilación --lock-path
build option)master_process#
multi_accept#
on
off
pcre_jit#
--enable-jit
.
Cuando Angie se compila con la biblioteca PCRE (--with-pcre=
),
el soporte JIT se habilita mediante la opción --with-pcre-jit
.pid#
pid
file | off
;pid logs/angie.pid;
(la ruta depende de la opción de compilación --pid-path
build option)off
desactiva la creación de este archivo.ssl_engine#
ssl_object_cache_inheritable#
ssl_object_cache_inheritable
on
| off
;ssl_object_cache_inheritable on;
engine:name:id
nunca se heredan, mientras que las claves secretas
especificadas como data:value
siempre se heredan.ssl_object_cache_inheritable on;
http {
server {
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
}
}
thread_pool#
thread_pool
name threads=
number [max_queue=
number];thread_pool default threads=32 max_queue=65536;
threads
define el número de hilos en el grupo.max_queue
limita el número de tareas
permitidas para esperar en la cola.
Por defecto, hasta 65536 tareas pueden estar en la cola.
Cuando la cola se desborda, la tarea se completa con un error.timer_resolution#
gettimeofday()
.
Por defecto, gettimeofday()
se llama cada vez que se recibe un evento del kernel.
Con resolución reducida, gettimeofday()
solo se llama una vez por intervalo especificado.timer_resolution 100ms;
use#
user#
user
usuario [grupo];user <build parameter --user> <build parameter --group>;
worker_aio_requests#
worker_connections#
worker_cpu_affinity#
worker_cpu_affinity
cpumask ...;worker_cpu_affinity
auto [cpumask];worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
worker_processes 2;
worker_cpu_affinity 0101 1010;
auto
permite vincular automáticamente los procesos de trabajo a las CPUs disponibles:worker_processes auto;
worker_cpu_affinity auto;
worker_cpu_affinity auto 01010101;
worker_priority#
worker_priority -10;
worker_processes#
auto
" intentará detectarlo automáticamente).worker_rlimit_core#
RLIMIT_CORE
)
para los procesos de trabajo.
Se utiliza para aumentar el límite sin reiniciar el proceso principal.worker_rlimit_nofile#
RLIMIT_NOFILE
)
para los procesos de trabajo.
Se utiliza para aumentar el límite sin reiniciar el proceso principal.worker_shutdown_timeout#
worker_shutdown_timeout
, Angie cerrará estas conexiones
forzosamente para completar el apagado.
Además, las conexiones keep-alive del cliente se cierran solo si han estado
inactivas durante al menos el tiempo especificado por lingering_timeout.working_directory#