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. Quando Nota Não há necessidade de habilitar Se 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. Determina se o Angie deve executar como daemon.
Isso é usado principalmente durante o desenvolvimento. 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.
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 Nota Para que esta diretiva funcione,
o Angie deve ser compilado com log de depuração habilitado. Esta diretiva é usada para depuração. Quando ocorre um erro interno,
como vazamento de socket durante reinicializações de processos worker,
habilitar Por padrão,
o Angie remove todas as variáveis de ambiente herdadas de seu processo pai
exceto a variável Essas variáveis são então: herdadas durante uma
atualização ao vivo de um arquivo executável usadas pelo módulo 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 Exemplo: Nota A variável de ambiente Padrão 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 O primeiro parâmetro especifica o arquivo para armazenar o log.
O valor especial O segundo parâmetro define o nível de logging, que pode ser um dos seguintes:
Configuração Níveis Capturados Se este parâmetro for omitido,
Nota Para que o nível de logging Fornece o contexto do arquivo de configuração para diretivas
que afetam o processamento de conexões. Inclui outro arquivo, ou arquivos que correspondem à mask especificada,
na configuração.
Os arquivos incluídos devem conter diretivas e blocos sintaticamente corretos. Exemplo: Carrega um módulo dinâmico do arquivo especificado.
Se um caminho relativo for fornecido, ele é interpretado baseado na
Exemplo: Padrão main O Angie usa um mecanismo de bloqueio para implementar 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. Determina se os processos worker são iniciados.
Esta diretiva é destinada aos desenvolvedores do Angie. Um processo worker aceitará todas as novas conexões simultaneamente. Um processo worker aceitará uma nova conexão por vez. Nota Esta diretiva é ignorada
se o método de processamento de conexão kqueue for usado,
pois ele fornece o número de novas conexões prontas para serem aceitas. 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. Nota 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 Padrão 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 Nota 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. Especifica o nome do acelerador SSL de hardware. 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 Objetos SSL carregados de variáveis não podem ser herdados. Exemplo: Padrão main Define o nome e parâmetros de um pool de threads
usado para leitura e envio multi-threaded de arquivos
sem bloquear processos worker. O parâmetro Se todas as threads no pool estiverem ocupadas executando tarefas, novas tarefas aguardam em uma fila.
O parâmetro Reduz a resolução do timer nos processos worker,
reduzindo assim o número de chamadas do sistema Exemplo: A implementação interna do intervalo depende do método usado: Especifica o método a ser usado para processamento de conexão.
Normalmente não há necessidade de especificá-lo explicitamente,
porque o Angie usará por padrão o método mais eficiente. Padrão main Define as credenciais de usuário e grupo usadas pelos processos worker
(veja também parâmetros de compilação).
Se grupo for omitido, um grupo cujo nome é igual ao do usuário é usado. Ao usar aio com o método de processamento de conexão epoll,
define o número máximo de operações de I/O assíncronas pendentes
para um único processo worker. 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. 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: Esta configuração vincula cada processo worker a uma CPU separada. Alternativamente: 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 O parâmetro opcional mask pode ser usado para limitar as CPUs
disponíveis para vinculação automática: Nota A diretiva está disponível apenas no FreeBSD e Linux. 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: 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 " Altera o limite no maior tamanho de um arquivo core ( Altera o limite no número máximo de arquivos abertos ( 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 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,
então desligam graciosamente. Se as conexões permanecerem abertas
por mais tempo que 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.Exemplo de Configuração#
user www www;
worker_processes 2;
error_log /var/log/error.log info;
events {
use kqueue; worker_connections 2048;
}
Diretivas#
accept_mutex#
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.accept_mutex
em sistemas
que suportam a flag EPOLLEXCLUSIVE
ou ao usar a diretiva reuseport.accept_mutex_delay#
daemon#
debug_connection#
unix:
para habilitar logs de depuração.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
criará um arquivo core (abort
)
ou parará o processo (stop
) para análise posterior com um depurador do sistema.env#
TZ
.
Esta diretiva permite preservar algumas variáveis herdadas,
modificar seus valores, ou criar novas variáveis de ambiente.TZ
é sempre herdada
e acessível ao módulo Perl
a menos que explicitamente configurado de outra forma.env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;
ANGIE
é usada internamente pelo Angie
e não deve ser definida diretamente pelo usuário.error_log#
error_log
file [level];error_log logs/error.log error;
(o caminho depende da --error-log-path
opção de compilação)main
,
o arquivo padrão será usado.stderr
seleciona o fluxo de erro padrão.
Para configurar logging para syslog,
use o prefixo "syslog:"
.
Para fazer log para um buffer de memória cíclico,
use o prefixo "memory:"
seguido do tamanho do buffer;
isso é tipicamente usado para depuração.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: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
é usado como nível de logging padrão.debug
funcione,
o Angie deve ser compilado com log de depuração habilitado.events#
include#
include mime.types;
include vhosts/*.conf;
load_module#
--prefix
opção de compilação. Para verificar o caminho:$ sudo angie -V
load_module modules/ngx_mail_module.so;
lock_file#
lock_file
arquivo;lock_file logs/angie.lock;
(o caminho depende da --lock-path
opção de compilação)master_process#
multi_accept#
on
off
pcre_jit#
--enable-jit
.
Quando o Angie é compilado com a biblioteca PCRE (--with-pcre=
),
o suporte JIT é habilitado usando a opção --with-pcre-jit
.pid#
pid
arquivo | off
;pid logs/angie.pid;
(o caminho depende da --pid-path
opção de compilação)off
desabilita a criação deste arquivo.ssl_engine#
ssl_object_cache_inheritable#
engine:name:id
nunca são herdadas, enquanto chaves secretas
especificadas como data:value
são sempre herdadas.ssl_object_cache_inheritable on;
http {
server {
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
}
}
thread_pool#
thread_pool
nome threads=
número [max_queue=
número];thread_pool default threads=32 max_queue=65536;
threads
define o número de threads no pool.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.timer_resolution#
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.timer_resolution 100ms;
use#
user#
user
usuário [grupo];user <parâmetro de compilação --user> <parâmetro de compilação --group>;
worker_aio_requests#
worker_connections#
worker_cpu_affinity#
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
worker_processes 2;
worker_cpu_affinity 0101 1010;
auto
permite vincular processos worker automaticamente às CPUs disponíveis:worker_processes auto;
worker_cpu_affinity auto;
worker_cpu_affinity auto 01010101;
worker_priority#
worker_priority -10;
worker_processes#
auto
" tentará detectá-lo automaticamente).worker_rlimit_core#
RLIMIT_CORE
)
para processos worker.
Usado para aumentar o limite sem reiniciar o processo principal.worker_rlimit_nofile#
RLIMIT_NOFILE
)
para processos worker.
Usado para aumentar o limite sem reiniciar o processo principal.worker_shutdown_timeout#
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.working_directory#