Page cover

Diretivas do Nginx

De acordo com a documentação oficial, o nginx consiste em módulos controlados por diretivas especificadas nos arquivos de configuração. Elas são divididas em diretivas simples e diretivas em bloco.

Uma diretiva simples consiste no nome e nos parâmetros separados por espaços e com um ponto e vírgula (;) no final.

Uma diretiva de bloco permite que o desenvolvedor utilize outras diretivas dentro de chaves ({ e }). Quando isso ocorre, essa diretiva de bloco é chamada de contexto (exemplos: events, http, server e location).

Diretiva add_header

A diretiva add_header é usada para adicionar cabeçalhos HTTP nas respostas do servidor. É muito útil para configurar cabeçalhos CORS, entre outros.

Sintaxe:

add_header name value [always];

Exemplo de uso:

location /upload {
    add_header "Access-Control-Allow-Origin" "https://*.valdeir.dev";
    add_header "Access-Control-Allow-Methods" "GET, OPTIONS";
    add_header X-Dev "Valdeir Psr" always;
}

Diretiva alias

A diretiva alias é usada para modificar a localização do diretório especificado na diretiva root.

Sintaxe:

alias path;

Exemplo de uso:

Este exemplo significa que a requisição para https://valdeir.psr/css/global.css carregará os arquivos de /dev/vda2/css/.

Diretiva client_max_body_size

Esta diretiva configura o tamanho máximo do corpo de uma requisição, útil para limitar o tamanho dos uploads.

Sintaxe:

Exemplo de uso:

Diretiva error_page

Permite customizar páginas de erro.

Sintaxe:

Exemplo de uso:

Diretiva listen

Define o endereço e/ou porta que o Nginx deve escutar.

Sintaxe:

Exemplo de uso:

Diretiva location

Usada para aplicar configurações baseadas na URI da requisição.

Sintaxe:

Exemplo de uso:

Diretiva map

Cria variáveis baseadas em valores chave-valor.

Sintaxe:

Exemplo de uso:

Vamos expandir a documentação incluindo detalhes adicionais sobre outras diretivas importantes do Nginx que podem ser usadas para aprimorar a configuração e gestão de seu servidor web:

Diretiva rewrite

A diretiva rewrite é usada para reescrever URIs de requisições internamente ou para redirecionar o usuário externamente usando códigos de status 301 ou 302.

Sintaxe:

Exemplo de uso:

Este exemplo redireciona usuários do caminho /oldsite para /newsite usando um redirecionamento permanente (301).

Diretiva proxy_pass

A diretiva proxy_pass é usada para redirecionar requisições para outro servidor.

Sintaxe:

Exemplo de uso:

Este exemplo redireciona todas as requisições para /app para um servidor rodando na porta 3000 no localhost.

Diretiva try_files

A diretiva try_files tenta entregar o arquivo requisitado pela URI, se não encontrar, tenta a próxima opção até encontrar uma correspondência válida ou retornar um erro.

Sintaxe:

Exemplo de uso:

Esse exemplo tenta servir o arquivo solicitado em /images, se não existir, serve default.png.

Diretiva gzip

A diretiva gzip habilita ou desabilita a compressão gzip para respostas.

Sintaxe:

Exemplo de uso:

Este exemplo ativa a compressão gzip para tipos de conteúdo específicos e utiliza o cabeçalho Vary para auxiliar os proxies a gerenciar a cache corretamente.

Diretiva ssl_certificate e ssl_certificate_key

Essas diretivas especificam o caminho para o certificado SSL e sua chave privada, respectivamente.

Sintaxe:

Exemplo de uso:

Este exemplo configura o Nginx para usar um certificado SSL específico e sua chave.

server (fonte)

Essa diretiva em bloco serve para criar um servidor virtual.

server_name (fonte)

Define o nome/URL do servidor virtual criado. É possível definir mais de um nome quando separados por espaços. A diretiva, assim como rewrite e location, permite o uso de expressões regulares.

Criaremos abaixo um servidor virtual que receberá as requisições das URLS:

  • valdeir.dev

  • cdn.valdeir.dev

  • assets.valdeir.dev

  • qualquer-coisa.valdeir.cdn

Através da diretiva server_name, você pode criar variáveis de acordo com os grupos capturados na sua expressão regular.

Ordem na busca pelos servidor

Quando há mais de um nome de servidor, o Nginx seguirá a seguinte ordem:

  1. Procurar pelo nome exato (valdeir.dev);

  2. Procurar pelo nome mais longo com o wildcard (*) como prefixo (*.valdeir.dev);

  3. Procurar pelo nome mais longo com o wildcard (*) como sufixo (valdeir.*);

  4. Procurar pela primeira ocorrência usando expressão regular.

try_files (fonte)

Essa diretiva verificará se um arquivo existe seguindo a ordem pré-definida pelo administrador. O processamento é feito semelhante ao das diretivas alias e root. Ela permite também que o cliente possa acessar uma pasta quando o valor terminar com uma barra (/). Isso é útil quando o desenvolvedor utiliza a diretiva autoindex. Se arquivo nenhum for encontrado, o o usuário será redirecionado para outra página, URL ou bloco location nomeado.

No exemplo acima, ao acessar a requisição /upload/avatar.webp, o Nginx seguirá a seguinte ordem:

  1. Verifica se o arquivo /var/www/html/upload/avatar.webp existe; se não existir,

  2. Verifica se a pasta /var/www/html/upload/avatar.webp/ existe; se não existir,

  3. Verifica se o arquivo /var/www/html/empty.gif existe; se não existir,

  4. Fecha a conexão sem uma resposta (usando o =444).

É possível também utilizar bloco location nomeado.

Mais Informações:

Last updated