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:

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

k, K

Kilobytes

m, M

Megabytes

g, G

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:

ms

Milissegundos

s

Segundos

m

Minutos

h

Horas

d

Dias

w

Semanas

M

Meses (assumidos como iguais a 30 dias)

y

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.

Recarregando a Configuração#

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:

$ sudo angie -t && sudo service angie restart

Alternativamente, você pode recarregar o serviço para aplicar a nova configuração sem interromper o processamento das requisições atuais:

$ sudo angie -t && sudo service angie reload