<!-- review: finished -->

<a id="core"></a>

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

<a id="configuration-example-1-1-1-1"></a>

## Ejemplo de configuración

```nginx
user www www;
worker_processes 2;

error_log /var/log/error.log info;

events {

    use kqueue; worker_connections 2048;
}
```

<a id="directives-1"></a>

## Directivas

<a id="index-0"></a>

<a id="accept-mutex"></a>

### accept_mutex

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `accept_mutex` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `accept_mutex off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | events                         |

Cuando `accept_mutex` está habilitado,
los procesos de trabajo aceptarán nuevas conexiones por turno.
Sin esta configuració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 nuevas conexiones es bajo.

#### NOTE
No es necesario habilitar `accept_mutex` en sistemas
que admiten la bandera `EPOLLEXCLUSIVE`
o cuando se utiliza la directiva [reuseport](https://es.angie.software//angie/docs/configuration/modules/http/index.md#listen).

<a id="index-1"></a>

<a id="accept-mutex-delay"></a>

### accept_mutex_delay

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `accept_mutex_delay` tiempo;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `accept_mutex_delay 500ms;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | events                         |

Si [accept_mutex](#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 nuevas conexiones.

<a id="index-2"></a>

<a id="daemon"></a>

### daemon

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `daemon` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|--------------------------|
| Predeterminado                                                                             | `daemon on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                     |

Determina si Angie debe ejecutarse como un demonio.
Esto se utiliza principalmente durante el desarrollo.

<a id="index-3"></a>

<a id="debug-connection"></a>

### debug_connection

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `debug_connection` dirección | CIDR | `unix:`;   |
|--------------------------------------------------------------------------------------------|--------------------------------------------------|
| Predeterminado                                                                             | —                                                |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | events                                           |

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](#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 `unix:` para habilitar los registros de depuración.

```nginx
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:;
    #  ...
}
```

#### NOTE
Para que esta directiva funcione,
Angie debe estar compilada con el [registro de depuración](https://es.angie.software//angie/docs/troubleshooting.md#debug-logging) habilitado.

<a id="index-4"></a>

<a id="debug-points"></a>

### debug_points

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `debug_points` `abort` | `stop`;   |
|--------------------------------------------------------------------------------------------|------------------------------------|
| Predeterminado                                                                             | —                                  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                               |

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 `debug_points` creará un archivo core (`abort`)
o detendrá el proceso (`stop`) para un análisis posterior con un depurador del sistema.

<a id="index-5"></a>

<a id="env"></a>

### env

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `env` variable[=valor];   |
|--------------------------------------------------------------------------------------------|---------------------------|
| Predeterminado                                                                             | `env TZ;`                 |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                      |

Por defecto,
Angie elimina todas las variables de entorno heredadas de su proceso padre
excepto la variable `TZ`.
Esta directiva le permite conservar algunas variables heredadas,
modificar sus valores o crear nuevas variables de entorno.

Estas variables son entonces:

- heredadas durante una
  [actualización en vivo de un archivo ejecutable](https://es.angie.software//angie/docs/configuration/runtime.md#service-upgrade)
- utilizadas por el módulo [Perl](https://es.angie.software//angie/docs/configuration/modules/http/http_perl.md#http-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 `TZ` siempre se hereda
y es accesible para el módulo [Perl](https://es.angie.software//angie/docs/configuration/modules/http/http_perl.md#http-perl)
a menos que se configure explícitamente lo contrario.

Ejemplo:

```nginx
env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;
```

#### NOTE
La variable de entorno `ANGIE` se utiliza internamente por Angie
y no debe ser establecida directamente por el usuario.

<a id="index-6"></a>

<a id="error-log"></a>

### error_log

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `error_log` archivo [nivel] [[`filter=`tipo:valor] ...];                                                                                                                                       |
|--------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `error_log logs/error.log error;`<br/>(la ruta depende de la opción de compilación `--error-log-path` [build option](https://es.angie.software//angie/docs/installation/sourcebuild.md#paths)) |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main, http, mail, stream, server, location                                                                                                                                                     |

Configura el registro,
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 `main`,
se utilizará el archivo predeterminado.

El primer parámetro especifica el archivo donde almacenar el log.
El valor especial `stderr` selecciona la salida de error estándar.
Para configurar el registro en [syslog](https://es.angie.software//angie/docs/configuration/processing.md#syslog-logging),
utilice el prefijo `"syslog:"`.
Para registrar en un [buffer cíclico de memoria](https://es.angie.software//angie/docs/troubleshooting.md#cyclic-memory-buffer),
utilice el prefijo `"memory:"` seguido del tamaño del buffer;
esto se utiliza típicamente para depuración.

El segundo parámetro establece el nivel de registro, que puede ser uno de los siguientes:
`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:

| Configuración   | Niveles Capturados                                                       |
|-----------------|--------------------------------------------------------------------------|
| `debug`         | `debug`, `info`, `notice`, `warn`, `error`,<br/>`crit`, `alert`, `emerg` |
| `info`          | `info`, `notice`, `warn`, `error`,<br/>`crit`, `alert`, `emerg`          |
| `notice`        | `notice`, `warn`, `error`,<br/>`crit`, `alert`, `emerg`                  |
| `warn`          | `warn`, `error`, `crit`, `alert`, `emerg`                                |
| `error`         | `error`, `crit`, `alert`, `emerg`                                        |
| `crit`          | `crit`, `alert`, `emerg`                                                 |
| `alert`         | `alert`, `emerg`                                                         |
| `emerg`         | `emerg`                                                                  |

Si este parámetro se omite,
se usa `error` como nivel de registro predeterminado.

Los parámetros opcionales `filter=` restringen qué mensajes se escriben en el log.
Los filtros admitidos son:

- `filter=file:`prefijo coincide con un prefijo de archivo fuente (por ejemplo,
  `ngx_http_access_module.c`);
- `filter=event:`prefijo coincide con un prefijo de ID de evento (por ejemplo,
  `http.upstream.peer`);
- `filter=tag:`etiqueta coincide con una etiqueta adjunta a la entrada del log.

Múltiples parámetros `filter=file:` o `filter=event:` se comparan
por prefijo, y cualquier coincidencia permite que el mensaje pase. Múltiples
parámetros `filter=tag:` requieren que todas las etiquetas estén presentes.
Las etiquetas pueden ser añadidas automáticamente por módulos (por ejemplo,
`http`, `stream`, `mail`, `upstream`,
`peer`, `subrequest`) y por
directivas [error_log_user_tag](https://es.angie.software//angie/docs/configuration/modules/http/index.md#error-log-user-tag).

#### NOTE
Para que el nivel de registro `debug` funcione,
Angie debe estar compilada con el [registro de depuración](https://es.angie.software//angie/docs/troubleshooting.md#debug-logging) habilitado.

Cada entrada en el log de errores tiene el siguiente formato:

```text
timestamp [level] PID#TID: *request_id message
```

Donde:

- `timestamp` — fecha y hora del evento
- `level` — nivel de registro del evento
- `PID#TID` — identificadores de proceso e hilo
- `*request_id` — identificador único de solicitud (si aplica)
- `message` — texto del mensaje de error o evento

<a id="index-7"></a>

<a id="events"></a>

### events

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `events` { ... };   |
|--------------------------------------------------------------------------------------------|---------------------|
| Predeterminado                                                                             | —                   |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                |

Proporciona el contexto del archivo de configuración para directivas
que afectan al procesamiento de conexiones.

<a id="index-8"></a>

<a id="include"></a>

### include

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `include` archivo | máscara;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | —                              |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | any                            |

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:

```nginx
include mime.types;
include vhosts/*.conf;
```

<a id="index-9"></a>

<a id="load-module"></a>

### load_module

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `load_module` file;   |
|--------------------------------------------------------------------------------------------|-----------------------|
| Predeterminado                                                                             | —                     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                  |

Carga un módulo dinámico desde el archivo especificado.
Si se proporciona una ruta relativa, se interpreta en función de la
opción de compilación `--prefix` [build option](https://es.angie.software//angie/docs/installation/sourcebuild.md#configure). Para verificar la ruta:

```console
$ sudo angie -V
```

Ejemplo:

```nginx
load_module modules/ngx_mail_module.so;
```

Si un módulo dinámico se compiló para una compilación de Angie diferente, la carga falla con un
error como: "module "..." was built for "..." but you are running "Angie"".

<a id="index-10"></a>

<a id="lock-file"></a>

### lock_file

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `lock_file` file;                                                                                                                                                       |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `lock_file logs/angie.lock;`<br/>(la ruta depende de la [opción de compilación](https://es.angie.software//angie/docs/installation/sourcebuild.md#paths) `--lock-path`) |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                                                                                                                                                                    |

Angie utiliza un mecanismo de bloqueo para implementar [accept_mutex](#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.

<a id="index-11"></a>

<a id="master-process"></a>

### master_process

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `master_process` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | `master_process on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                             |

Determina si se inician procesos de trabajo.
Esta directiva está destinada para desarrolladores de Angie.

<a id="index-12"></a>

<a id="multi-accept"></a>

### multi_accept

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `multi_accept` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `multi_accept off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | events                         |

| `on`   | Un proceso de trabajo aceptará todas las nuevas conexiones simultáneamente.   |
|--------|-------------------------------------------------------------------------------|
| `off`  | Un proceso de trabajo aceptará una nueva conexión a la vez.                   |

#### NOTE
Esta directiva se ignora
si se utiliza el método de procesamiento de conexiones [kqueue](https://es.angie.software//angie/docs/configuration/processing.md#kqueue),
ya que proporciona el número de nuevas conexiones listas para ser aceptadas.

<a id="index-13"></a>

<a id="pcre-jit"></a>

### pcre_jit

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `pcre_jit` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|----------------------------|
| Predeterminado                                                                             | `pcre_jit off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                       |

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.

#### NOTE
JIT está disponible en las bibliotecas PCRE desde la versión 8.20,
siempre que se hayan compilado con la opción de configuración `--enable-jit`.
Cuando Angie se compila con la biblioteca PCRE (`--with-pcre=`),
el soporte JIT se habilita mediante la opción `--with-pcre-jit`.

<a id="index-14"></a>

<a id="pid"></a>

### pid

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `pid` file | `off`;                                                                                                                                             |
|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `pid logs/angie.pid;`<br/>(la ruta depende de la [opción de compilación](https://es.angie.software//angie/docs/installation/sourcebuild.md#paths) `--pid-path`) |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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 `off` desactiva la creación de este archivo.

#### NOTE
Si se modifica el valor de file durante la reconfiguración
pero apunta a un enlace simbólico del archivo PID anterior,
el archivo no se volverá a crear.

<a id="index-15"></a>

<a id="ssl-engine"></a>

### ssl_engine

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `ssl_engine` device;   |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | —                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                   |

Especifica el nombre del acelerador de hardware SSL.

<a id="index-16"></a>

<a id="ssl-object-cache-inheritable"></a>

### ssl_object_cache_inheritable

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `ssl_object_cache_inheritable` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|------------------------------------------------|
| Predeterminado                                                                             | `ssl_object_cache_inheritable on;`             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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 `engine:name:id` nunca se heredan, mientras que las claves secretas
especificadas como `data:value` siempre se heredan.

Los objetos SSL cargados desde variables no pueden heredarse.

Ejemplo:

```nginx
ssl_object_cache_inheritable on;

http {
    server {
        ssl_certificate     example.com.crt;
        ssl_certificate_key example.com.key;
    }
}
```

<a id="index-17"></a>

<a id="thread-pool"></a>

### thread_pool

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `thread_pool` name `threads=`number [`max_queue=`number];   |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------|
| Predeterminado                                                                             | `thread_pool default threads=32 max_queue=65536;`           |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                                                        |

Define el nombre y los parámetros de un grupo de hilos
utilizado para la lectura y envío de archivos multihilo
[sin bloqueo](https://es.angie.software//angie/docs/configuration/modules/http/index.md#aio) de procesos de trabajo.

El parámetro `threads` define el número de hilos en el grupo.

Si todos los hilos del grupo están ocupados ejecutando tareas, las nuevas tareas esperan en una cola.
El parámetro `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.

<a id="index-18"></a>

<a id="timer-resolution"></a>

### timer_resolution

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `timer_resolution` interval;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | —                              |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                           |

Reduce la resolución del temporizador en los procesos de trabajo,
reduciendo así el número de llamadas al sistema `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.

Ejemplo:

```nginx
timer_resolution 100ms;
```

La implementación interna del intervalo depende del método utilizado:

- el filtro `EVFILT_TIMER` si se usa [kqueue](https://es.angie.software//angie/docs/configuration/processing.md#kqueue);
- `timer_create()` si se usa [eventport](https://es.angie.software//angie/docs/configuration/processing.md#eventport);
- `setitimer()` en otros casos.

<a id="index-19"></a>

<a id="use"></a>

### use

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `use` method;   |
|--------------------------------------------------------------------------------------------|-----------------|
| Predeterminado                                                                             | —               |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | events          |

Especifica el método a utilizar para el [procesamiento de conexiones](https://es.angie.software//angie/docs/configuration/processing.md#methods-use).
Normalmente no hay necesidad de especificarlo explícitamente,
porque Angie utilizará por defecto el método más eficiente.

<a id="index-20"></a>

<a id="user"></a>

### user

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `user` user [group];                                       |
|--------------------------------------------------------------------------------------------|------------------------------------------------------------|
| Predeterminado                                                                             | `user <build parameter --user> <build parameter --group>;` |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                                                       |

Define las credenciales de user y group utilizadas por los procesos de trabajo
(ver también [parámetros de compilación](https://es.angie.software//angie/docs/installation/sourcebuild.md#configure)).
Si se omite group, se utiliza un grupo cuyo nombre es igual al de user.

<a id="index-21"></a>

<a id="worker-aio-requests"></a>

### worker_aio_requests

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_aio_requests` number;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | `worker_aio_requests 32;`       |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | events                          |

Al usar [aio](https://es.angie.software//angie/docs/configuration/modules/http/index.md#aio) con el método de procesamiento de conexiones [epoll](https://es.angie.software//angie/docs/configuration/processing.md#epoll),
establece el número máximo de operaciones de E/S asíncronas pendientes
para un único proceso de trabajo.

<a id="index-22"></a>

<a id="worker-connections"></a>

### worker_connections

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_connections` number;   |
|--------------------------------------------------------------------------------------------|--------------------------------|
| Predeterminado                                                                             | `worker_connections 512;`      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | events                         |

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 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](#worker-rlimit-nofile).

<a id="index-23"></a>

<a id="worker-cpu-affinity"></a>

### worker_cpu_affinity

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_cpu_affinity` cpumask ...;<br/><br/>`worker_cpu_affinity` auto [cpumask];   |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| Predeterminado                                                                             | —                                                                                   |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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:

```nginx
worker_processes    4;
worker_cpu_affinity 0001 0010 0100 1000;
```

Esta configuración vincula cada proceso de trabajo a una CPU separada.

Alternativamente:

```nginx
worker_processes    2;
worker_cpu_affinity 0101 1010;
```

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 `auto`
permite vincular automáticamente los procesos de trabajo a las CPUs disponibles:

```nginx
worker_processes auto;
worker_cpu_affinity auto;
```

El parámetro opcional de máscara puede utilizarse para limitar las CPUs
disponibles para la vinculación automática:

```nginx
worker_cpu_affinity auto 01010101;
```

#### NOTE
La directiva solo está disponible en FreeBSD y Linux.

<a id="index-24"></a>

<a id="worker-priority"></a>

### worker_priority

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_priority` number;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | `worker_priority 0;`        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                        |

Define la prioridad de planificación para los procesos de trabajo, tal como lo hace
el comando **nice**: un number negativo
significa mayor prioridad.
El rango permitido normalmente varía de -20 a 20.

Ejemplo:

```nginx
worker_priority -10;
```

<a id="index-25"></a>

<a id="worker-processes"></a>

### worker_processes

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_processes` number | `auto`;   |
|--------------------------------------------------------------------------------------------|---------------------------------------|
| Predeterminado                                                                             | `worker_processes 1;`                 |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                                  |

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 "`auto`" intentará detectarlo automáticamente).

<a id="index-26"></a>

<a id="worker-rlimit-core"></a>

### worker_rlimit_core

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_rlimit_core` size;   |
|--------------------------------------------------------------------------------------------|------------------------------|
| Predeterminado                                                                             | —                            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                         |

Cambia el límite del tamaño máximo de un archivo core (`RLIMIT_CORE`)
para los procesos de trabajo.
Se utiliza para aumentar el límite sin reiniciar el proceso principal.

<a id="index-27"></a>

<a id="worker-rlimit-nofile"></a>

### worker_rlimit_nofile

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_rlimit_nofile` number;   |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | —                                |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                             |

Cambia el límite del número máximo de archivos abiertos (`RLIMIT_NOFILE`)
para los procesos de trabajo.
Se utiliza para aumentar el límite sin reiniciar el proceso principal.

<a id="index-28"></a>

<a id="worker-shutdown-timeout"></a>

### worker_shutdown_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_shutdown_timeout` time;   |
|--------------------------------------------------------------------------------------------|-----------------------------------|
| Predeterminado                                                                             | —                                 |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                              |

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](https://es.angie.software//angie/docs/configuration/runtime.md#control-signals) 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 `worker_shutdown_timeout`, Angie cerrará forzosamente estas
conexiones 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](https://es.angie.software//angie/docs/configuration/modules/http/index.md#lingering-timeout).

<a id="index-29"></a>

<a id="working-directory"></a>

### working_directory

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `working_directory` directory;   |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | —                                |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | main                             |

Define el directorio de trabajo actual para un proceso de trabajo.
Se utiliza principalmente al escribir un archivo core,
en cuyo caso un proceso de trabajo debe tener permiso de escritura para el
directorio especificado.
