Arquivos de Configuração#
O Angie usa um arquivo de configuração baseado em texto. Por padrão, este arquivo é nomeado
angie.conf
e está localizado de acordo com o parâmetro de compilação
--conf-path, tipicamente no diretório /etc/angie
.
Um arquivo de configuração geralmente consiste nos seguintes contextos:
events – Processamento geral de conexões
http – Tráfego HTTP
mail – Tráfego de email
stream – Tráfego TCP e UDP
wasm_modules – Runtime WASM
Diretivas que são colocadas fora desses contextos são consideradas como estando no
contexto main
:
user angie; # uma diretiva no contexto 'main'
events {
# configuração do processamento de conexões
}
http {
# Configuração específica para HTTP e que afeta todos os servidores virtuais
server {
# configuração do servidor virtual HTTP 1
location /one {
# configuração para processar URIs que começam com '/one'
}
location /two {
# configuração para processar URIs que começam com '/two'
}
}
server {
# configuração do servidor virtual HTTP 2
}
}
stream {
# Configuração específica para TCP/UDP e que afeta todos os servidores virtuais
server {
# configuração do servidor virtual TCP 1
}
}
Para simplificar o gerenciamento da configuração, recomendamos usar a diretiva include
no arquivo principal angie.conf
para referenciar o conteúdo de
arquivos específicos por funcionalidade:
include /etc/angie/http.d/*.conf;
include /etc/angie/stream.d/*.conf;
Herança#
Em geral, um contexto filho (aquele que está contido dentro de outro contexto, que é considerado seu pai) herda as configurações das diretivas definidas no nível pai. Algumas diretivas podem aparecer em múltiplos contextos; nesses casos, você pode sobrescrever as configurações herdadas do pai incluindo a diretiva no contexto filho.
Sintaxe#
Unidades de Medida#
Você pode especificar tamanhos usando as seguintes unidades:
Sem sufixo | Bytes |
| Kilobytes |
| Megabytes |
| Gigabytes |
Por exemplo: 1024
, 8k
, 1m
, 16g
.
Intervalos de tempo podem ser especificados em milissegundos, segundos, minutos, horas, dias, e assim por diante, usando os seguintes sufixos:
| Milissegundos |
| Segundos |
| Minutos |
| Horas |
| Dias |
| Semanas |
| Meses (assumidos como iguais a 30 dias) |
| Anos (assumidos como iguais a 365 dias) |
Múltiplas unidades podem ser combinadas em um único valor especificando-as em ordem
da mais significativa para a menos significativa, opcionalmente separadas por
espaços em branco. Por exemplo, "1h 30m"
especifica a mesma duração que
"90m"
ou "5400s"
. Um valor sem sufixo é interpretado como
segundos. É recomendado sempre especificar um sufixo.
Alguns intervalos de tempo só podem ser especificados com resolução de segundos.
Diretivas#
Cada diretiva consiste em um nome e um conjunto de parâmetros. Se qualquer parte de uma diretiva precisar conter espaços, ela deve ser colocada entre aspas ou escapar os espaços:
add_header X-MyHeader "foo bar";
add_header X-MyHeader foo\ bar;
Se um parâmetro nomeado precisar de espaços e você usar aspas, seu nome também deve ser colocado entre aspas:
server example.com "sid=server 1";
Configurando Hashes#
Para processar eficientemente conjuntos estáticos de dados, como nomes de servidor, valores da diretiva map, tipos MIME e nomes de cabeçalhos de requisição, o Angie utiliza tabelas hash. Durante a inicialização e cada reconfiguração, o Angie determina o tamanho ótimo para essas tabelas hash para garantir que o tamanho do bucket, que armazena chaves com valores hash idênticos, não exceda o parâmetro configurado (hash bucket size). O tamanho da tabela é medido em buckets e é ajustado até exceder o parâmetro hash max size. A maioria das tabelas hash têm diretivas correspondentes para ajustar esses parâmetros, como server_names_hash_max_size e server_names_hash_bucket_size para nomes de servidor.
O parâmetro hash bucket size é alinhado a um múltiplo do tamanho da
linha de cache do processador. Este alinhamento melhora a eficiência da busca de chaves em
processadores modernos reduzindo o número de acessos à memória. Se o hash bucket size
for igual ao tamanho de uma linha de cache, o número máximo de acessos à memória durante uma
busca de chave será dois: um para calcular o endereço do bucket e outro para buscar
dentro do bucket. Portanto, se o Angie indicar que o hash max
size ou hash bucket size deve ser aumentado, comece aumentando o hash
max size. Para aplicar mudanças no arquivo de configuração, ele deve ser recarregado. Você pode
reiniciar o processo do Angie com uma verificação de sintaxe da configuração antes: Alternativamente, você pode recarregar o serviço para aplicar a nova configuração sem
interromper o processamento das requisições atuais:Recarregando a Configuração#
$ sudo angie -t && sudo service angie restart
$ sudo angie -t && sudo service angie reload