<!-- review: finished -->

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

# Módulo Core

O módulo fornece funcionalidade essencial e diretivas de configuração
necessárias para a operação básica do servidor,
e lida com tarefas críticas como gerenciar processos worker,
configurar modelos orientados a eventos,
e processar conexões e requisições recebidas.
Inclui diretivas essenciais para configurar o processo principal, log
de erros, e controlar o comportamento do servidor em baixo nível.

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

## Exemplo de Configuração

```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>

## Diretivas

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

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

### accept_mutex

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `accept_mutex` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|--------------------------------|
| Padrão                                                                                    | `accept_mutex off;`            |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | events                         |

Quando `accept_mutex` está habilitado,
processos worker aceitarão novas conexões alternadamente.
Sem essa configuração, todos os processos worker são notificados de novas conexões,
o que pode levar ao uso ineficiente de recursos do sistema
se o volume de novas conexões for baixo.

#### NOTE
Não há necessidade de habilitar `accept_mutex` em sistemas
que suportam a flag `EPOLLEXCLUSIVE`
ou ao usar a diretiva [reuseport](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#listen).

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

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

### accept_mutex_delay

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `accept_mutex_delay` time;   |
|-------------------------------------------------------------------------------------------|------------------------------|
| Padrão                                                                                    | `accept_mutex_delay 500ms;`  |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | events                       |

Se [accept_mutex](#accept-mutex) estiver habilitado,
esta diretiva especifica o tempo máximo
que um processo worker aguardará
para continuar aceitando novas conexões
enquanto outro processo worker já está lidando com novas conexões.

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

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

### daemon

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `daemon` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|--------------------------|
| Padrão                                                                                    | `daemon on;`             |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                     |

Determina se o Angie deve executar como daemon.
Isso é usado principalmente durante o desenvolvimento.

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

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

### debug_connection

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `debug_connection` address | CIDR | `unix:`;   |
|-------------------------------------------------------------------------------------------|------------------------------------------------|
| Padrão                                                                                    | —                                              |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | events                                         |

Habilita logs de depuração para conexões específicas de clientes.
Outras conexões usarão o nível de logging
definido pela diretiva [error_log](#error-log).
Você pode especificar conexões por endereço IPv4 ou IPv6, rede, ou hostname.
Para conexões usando sockets de domínio UNIX,
use o parâmetro `unix:` para habilitar logs de depuração.

```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 diretiva funcione,
o Angie deve ser compilado com [log de depuração](https://pt.angie.software//angie/docs/troubleshooting.md#debug-logging) habilitado.

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

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

### debug_points

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `debug_points` `abort` | `stop`;   |
|-------------------------------------------------------------------------------------------|------------------------------------|
| Padrão                                                                                    | —                                  |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                               |

Esta diretiva é usada para depuração.

Quando ocorre um erro interno,
como vazamento de socket durante reinicializações de processos worker,
habilitar `debug_points` criará um arquivo core (`abort`)
ou parará o processo (`stop`) para análise posterior com um depurador do sistema.

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

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

### env

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `env` variable[=value];   |
|-------------------------------------------------------------------------------------------|---------------------------|
| Padrão                                                                                    | `env TZ;`                 |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                      |

Por padrão,
o Angie remove todas as variáveis de ambiente herdadas de seu processo pai
exceto a variável `TZ`.
Esta diretiva permite preservar algumas variáveis herdadas,
modificar seus valores, ou criar novas variáveis de ambiente.

Essas variáveis são então:

- herdadas durante uma
  [atualização ao vivo de um arquivo executável](https://pt.angie.software//angie/docs/configuration/runtime.md#service-upgrade)
- usadas pelo módulo [Perl](https://pt.angie.software//angie/docs/configuration/modules/http/http_perl.md#http-perl)
- disponíveis para processos worker

Note que controlar bibliotecas do sistema desta forma nem sempre pode ser efetivo,
pois bibliotecas frequentemente verificam variáveis apenas durante a inicialização,
que ocorre antes desta diretiva fazer efeito.
A variável `TZ` é sempre herdada
e acessível ao módulo [Perl](https://pt.angie.software//angie/docs/configuration/modules/http/http_perl.md#http-perl)
a menos que explicitamente configurado de outra forma.

Exemplo:

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

#### NOTE
A variável de ambiente `ANGIE` é usada internamente pelo Angie
e não deve ser definida diretamente pelo usuário.

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

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

### error_log

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `error_log` file [level] [[`filter=`type:value] ...];                                                                                                                          |
|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `error_log logs/error.log error;`<br/>(o caminho depende da [opção de compilação](https://pt.angie.software//angie/docs/installation/sourcebuild.md#paths) `--error-log-path`) |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main, http, mail, stream, server, location                                                                                                                                     |

Configura o logging,
permitindo que múltiplos logs sejam especificados no mesmo nível de configuração.
Se um arquivo de log não for explicitamente definido no nível de configuração `main`,
o arquivo padrão será usado.

O primeiro parâmetro especifica o arquivo para armazenar o log.
O valor especial `stderr` seleciona o fluxo de erro padrão.
Para configurar logging para [syslog](https://pt.angie.software//angie/docs/configuration/processing.md#syslog-logging),
use o prefixo `"syslog:"`.
Para fazer log para um [buffer de memória cíclico](https://pt.angie.software//angie/docs/troubleshooting.md#cyclic-memory-buffer),
use o prefixo `"memory:"` seguido do tamanho do buffer;
isso é tipicamente usado para depuração.

O segundo parâmetro define o nível de logging, que pode ser um dos seguintes:
`debug`, `info`, `notice`, `warn`, `error`,
`crit`, `alert`, ou `emerg`.
Esses níveis são listados em ordem de severidade crescente.
Definir um nível de log capturará mensagens de severidade igual e superior:

| Configuração   | Níveis 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`                                                                  |

Se este parâmetro for omitido,
`error` é usado como nível de logging padrão.

Parâmetros opcionais `filter=` restringem quais mensagens são escritas no log.
Filtros suportados são:

- `filter=file:`prefix corresponde a um prefixo de arquivo fonte (por exemplo,
  `ngx_http_access_module.c`);
- `filter=event:`prefix corresponde a um prefixo de ID de evento (por exemplo,
  `http.upstream.peer`);
- `filter=tag:`tag corresponde a uma tag anexada à entrada de log.

Múltiplos parâmetros `filter=file:` ou `filter=event:` são correspondidos
por prefixo, e qualquer correspondência permite que a mensagem passe. Múltiplos
parâmetros `filter=tag:` exigem que todas as tags estejam presentes.
Tags podem ser adicionadas automaticamente por módulos (por exemplo,
`http`, `stream`, `mail`, `upstream`,
`peer`, `subrequest`) e por
diretivas [error_log_user_tag](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#error-log-user-tag).

#### NOTE
Para que o nível de logging `debug` funcione,
o Angie deve ser compilado com [log de depuração](https://pt.angie.software//angie/docs/troubleshooting.md#debug-logging) habilitado.

Cada entrada no log de erros tem o seguinte formato:

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

Onde:

- `timestamp` — data e hora do evento
- `level` — nível de logging do evento
- `PID#TID` — identificadores de processo e thread
- `*request_id` — identificador único da requisição (se aplicável)
- `message` — texto da mensagem de erro ou evento

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

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

### events

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `events` { ... };   |
|-------------------------------------------------------------------------------------------|---------------------|
| Padrão                                                                                    | —                   |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                |

Fornece o contexto do arquivo de configuração para diretivas
que afetam o processamento de conexões.

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

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

### include

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `include` file | mask;   |
|-------------------------------------------------------------------------------------------|--------------------------|
| Padrão                                                                                    | —                        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | any                      |

Inclui outro arquivo, ou arquivos que correspondem à mask especificada,
na configuração.
Os arquivos incluídos devem conter diretivas e blocos sintaticamente corretos.

Exemplo:

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

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

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

### load_module

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `load_module` arquivo;   |
|-------------------------------------------------------------------------------------------|--------------------------|
| Padrão                                                                                    | —                        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                     |

Carrega um módulo dinâmico do arquivo especificado.
Se um caminho relativo for fornecido, ele é interpretado com base na
`--prefix` [opção de compilação](https://pt.angie.software//angie/docs/installation/sourcebuild.md#configure). Para verificar o caminho:

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

Exemplo:

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

Se um módulo dinâmico foi compilado para uma compilação diferente do Angie, o carregamento falha com um
erro como: "module "..." was built for "..." but you are running "Angie"".

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

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

### lock_file

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `lock_file` arquivo;                                                                                                                                                 |
|-------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `lock_file logs/angie.lock;`<br/>(o caminho depende da `--lock-path` [opção de compilação](https://pt.angie.software//angie/docs/installation/sourcebuild.md#paths)) |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                                                                                                                                                                 |

O Angie usa um mecanismo de bloqueio para implementar [accept_mutex](#accept-mutex)
e serializar o acesso à memória compartilhada.
Na maioria dos sistemas, os bloqueios são gerenciados usando operações atômicas,
tornando esta diretiva desnecessária.
Em certos sistemas, no entanto, um mecanismo alternativo de arquivo de bloqueio é usado.
Esta diretiva define um prefixo para nomes de arquivos de bloqueio.

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

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

### master_process

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `master_process` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|----------------------------------|
| Padrão                                                                                    | `master_process on;`             |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                             |

Determina se os processos worker são iniciados.
Esta diretiva é destinada aos desenvolvedores do Angie.

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

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

### multi_accept

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `multi_accept` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|--------------------------------|
| Padrão                                                                                    | `multi_accept off;`            |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | events                         |

| `on`   | Um processo worker aceitará todas as novas conexões simultaneamente.   |
|--------|------------------------------------------------------------------------|
| `off`  | Um processo worker aceitará uma nova conexão por vez.                  |

#### NOTE
Esta diretiva é ignorada
se o método de processamento de conexão [kqueue](https://pt.angie.software//angie/docs/configuration/processing.md#kqueue) for usado,
pois ele fornece o número de novas conexões prontas para serem aceitas.

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

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

### pcre_jit

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `pcre_jit` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|----------------------------|
| Padrão                                                                                    | `pcre_jit off;`            |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                       |

Habilita ou desabilita a "compilação just-in-time" (PCRE JIT)
para expressões regulares conhecidas no momento da análise da configuração.

O PCRE JIT pode acelerar significativamente o processamento de expressões regulares.

#### NOTE
JIT está disponível nas bibliotecas PCRE a partir da versão 8.20,
desde que sejam compiladas com a opção de configuração `--enable-jit`.
Quando o Angie é compilado com a biblioteca PCRE (`--with-pcre=`),
o suporte JIT é habilitado usando a opção `--with-pcre-jit`.

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

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

### pid

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `pid` arquivo | `off`;                                                                                                                                       |
|-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Padrão                                                                                    | `pid logs/angie.pid;`<br/>(o caminho depende da `--pid-path` [opção de compilação](https://pt.angie.software//angie/docs/installation/sourcebuild.md#paths)) |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                                                                                                                                                         |

Especifica o arquivo que armazenará o ID do processo principal do Angie.
O arquivo é criado atomicamente, o que garante que seu conteúdo esteja sempre correto.
A configuração `off` desabilita a criação deste arquivo.

#### NOTE
Se a configuração do arquivo for modificada durante a reconfiguração
mas apontar para um link simbólico do arquivo PID anterior,
o arquivo não será recriado.

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

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

### ssl_engine

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `ssl_engine` dispositivo;   |
|-------------------------------------------------------------------------------------------|-----------------------------|
| Padrão                                                                                    | —                           |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                        |

Especifica o nome do acelerador SSL de hardware.

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

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

### ssl_object_cache_inheritable

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `ssl_object_cache_inheritable` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|------------------------------------------------|
| Padrão                                                                                    | `ssl_object_cache_inheritable on;`             |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                                           |

Se habilitado, objetos SSL (certificados SSL, chaves secretas, certificados CA confiáveis,
listas CRL) são herdados através de recarregamentos de configuração.

Objetos SSL carregados de arquivos são herdados se seu tempo de modificação e índice
de arquivo não mudaram desde o carregamento de configuração anterior. Chaves secretas
especificadas como `engine:name:id` nunca são herdadas, enquanto chaves secretas
especificadas como `data:value` são sempre herdadas.

Objetos SSL carregados de variáveis não podem ser herdados.

Exemplo:

```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

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `thread_pool` nome `threads=`número [`max_queue=`número];   |
|-------------------------------------------------------------------------------------------|-------------------------------------------------------------|
| Padrão                                                                                    | `thread_pool default threads=32 max_queue=65536;`           |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                                                        |

Define o nome e parâmetros de um pool de threads
usado para leitura e envio multi-threaded de arquivos
[sem bloquear](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#aio) processos worker.

O parâmetro `threads` define o número de threads no pool.

Se todas as threads no pool estiverem ocupadas executando tarefas, novas tarefas aguardam em uma fila.
O parâmetro `max_queue` limita o número de tarefas
permitidas para aguardar na fila.
Por padrão, até 65536 tarefas podem estar na fila.
Quando a fila transborda, a tarefa é completada com um erro.

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

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

### timer_resolution

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `timer_resolution` intervalo;   |
|-------------------------------------------------------------------------------------------|---------------------------------|
| Padrão                                                                                    | —                               |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                            |

Reduz a resolução do timer nos processos worker,
reduzindo assim o número de chamadas do sistema `gettimeofday()`.
Por padrão, `gettimeofday()` é chamado cada vez que um evento do kernel é recebido.
Com resolução reduzida, `gettimeofday()` é chamado apenas uma vez por intervalo especificado.

Exemplo:

```nginx
timer_resolution 100ms;
```

A implementação interna do intervalo depende do método usado:

- o filtro `EVFILT_TIMER` se [kqueue](https://pt.angie.software//angie/docs/configuration/processing.md#kqueue) for usado;
- `timer_create()` se [eventport](https://pt.angie.software//angie/docs/configuration/processing.md#eventport) for usado;
- `setitimer()` caso contrário.

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

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

### use

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `use` método;   |
|-------------------------------------------------------------------------------------------|-----------------|
| Padrão                                                                                    | —               |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | events          |

Especifica o método a ser usado para [processamento de conexão](https://pt.angie.software//angie/docs/configuration/processing.md#methods-use).
Normalmente não há necessidade de especificá-lo explicitamente,
porque o Angie usará por padrão o método mais eficiente.

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

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

### user

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `user` usuário [grupo];                                                    |
|-------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|
| Padrão                                                                                    | `user <parâmetro de compilação --user> <parâmetro de compilação --group>;` |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                                                                       |

Define as credenciais de usuário e grupo usadas pelos processos worker
(veja também [parâmetros de compilação](https://pt.angie.software//angie/docs/installation/sourcebuild.md#configure)).
Se grupo for omitido, um grupo cujo nome é igual ao do usuário é usado.

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

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

### worker_aio_requests

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_aio_requests` número;   |
|-------------------------------------------------------------------------------------------|---------------------------------|
| Padrão                                                                                    | `worker_aio_requests 32;`       |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | events                          |

Ao usar [aio](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#aio) com o método de processamento de conexão [epoll](https://pt.angie.software//angie/docs/configuration/processing.md#epoll),
define o número máximo de operações de I/O assíncronas pendentes
para um único processo worker.

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

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

### worker_connections

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_connections` número;   |
|-------------------------------------------------------------------------------------------|--------------------------------|
| Padrão                                                                                    | `worker_connections 512;`      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | events                         |

Define o número máximo de conexões simultâneas que podem ser abertas por um processo worker.

Deve-se ter em mente que este número inclui todas as conexões
(por exemplo, conexões com servidores proxy, entre outras),
não apenas conexões com clientes.
Outra consideração é que o número real de conexões simultâneas
não pode exceder o limite atual no número máximo de arquivos abertos,
que pode ser alterado por [worker_rlimit_nofile](#worker-rlimit-nofile).

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

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

### worker_cpu_affinity

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_cpu_affinity` cpumask ...;<br/><br/>`worker_cpu_affinity` auto [cpumask];   |
|-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| Padrão                                                                                    | —                                                                                   |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                                                                                |

Vincula processos worker aos conjuntos de CPUs.
Cada conjunto de CPU é representado por uma máscara de bits das CPUs permitidas.
Deve haver um conjunto separado definido para cada um dos processos worker.
Por padrão, os processos worker não são vinculados a nenhuma CPU específica.

Por exemplo:

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

Esta configuração vincula cada processo worker a uma CPU separada.

Alternativamente:

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

Isso vincula o primeiro processo worker à CPU0 e CPU2,
e o segundo processo worker à CPU1 e CPU3.
Esta configuração é adequada para hyper-threading.

O valor especial `auto`
permite vincular processos worker automaticamente às CPUs disponíveis:

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

O parâmetro opcional mask pode ser usado para limitar as CPUs
disponíveis para vinculação automática:

```nginx
worker_cpu_affinity auto 01010101;
```

#### NOTE
A diretiva está disponível apenas no FreeBSD e Linux.

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

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

### worker_priority

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_priority` number;   |
|-------------------------------------------------------------------------------------------|-----------------------------|
| Padrão                                                                                    | `worker_priority 0;`        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                        |

Define a prioridade de agendamento para processos worker como é feito
pelo comando **nice**: um number negativo
significa prioridade mais alta.
O intervalo permitido normalmente varia de -20 a 20.

Exemplo:

```nginx
worker_priority -10;
```

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

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

### worker_processes

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_processes` number | `auto`;   |
|-------------------------------------------------------------------------------------------|---------------------------------------|
| Padrão                                                                                    | `worker_processes 1;`                 |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                                  |

Define o número de processos worker.

O valor ideal depende de muitos fatores incluindo (mas não limitado a)
o número de núcleos de CPU, o número de discos rígidos que armazenam dados,
e padrão de carga.
Quando há dúvida, defini-lo para o número de núcleos de CPU disponíveis
seria um bom começo (o valor "`auto`" tentará detectá-lo automaticamente).

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

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

### worker_rlimit_core

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_rlimit_core` size;   |
|-------------------------------------------------------------------------------------------|------------------------------|
| Padrão                                                                                    | —                            |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                         |

Altera o limite no maior tamanho de um arquivo core (`RLIMIT_CORE`)
para processos worker.
Usado para aumentar o limite sem reiniciar o processo principal.

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

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

### worker_rlimit_nofile

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_rlimit_nofile` number;   |
|-------------------------------------------------------------------------------------------|----------------------------------|
| Padrão                                                                                    | —                                |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                             |

Altera o limite no número máximo de arquivos abertos (`RLIMIT_NOFILE`)
para processos worker.
Usado para aumentar o limite sem reiniciar o processo principal.

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

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

### worker_shutdown_timeout

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `worker_shutdown_timeout` time;   |
|-------------------------------------------------------------------------------------------|-----------------------------------|
| Padrão                                                                                    | —                                 |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                              |

Configura um timeout em segundos para um desligamento gracioso de processos worker.
Quando o tempo especificado expira,
o Angie tentará fechar todas as conexões atualmente abertas
para facilitar o desligamento.

O desligamento gracioso é iniciado enviando um [sinal QUIT](https://pt.angie.software//angie/docs/configuration/runtime.md#control-signals) para o processo principal, que instrui os processos worker
a parar de aceitar novas conexões e permite que as conexões existentes sejam concluídas.
Os processos worker continuam a lidar com requisições ativas até que terminem,
e então desligam graciosamente. Se as conexões permanecerem abertas
por mais tempo que `worker_shutdown_timeout`, o Angie fechará forçadamente essas
conexões para completar o desligamento.
Além disso, conexões keep-alive de cliente são fechadas apenas se estiverem
inativas por pelo menos o tempo especificado por [lingering_timeout](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#lingering-timeout).

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

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

### working_directory

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `working_directory` directory;   |
|-------------------------------------------------------------------------------------------|----------------------------------|
| Padrão                                                                                    | —                                |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | main                             |

Define o diretório de trabalho atual para um processo worker.
É usado principalmente ao escrever um arquivo core,
caso em que um processo worker deve ter permissão de escrita para o
diretório especificado.
