Configuração do nginx.conf: Estrutura e Diretivas Principais

Estrutura Básica do Arquivo nginx.conf

Após a instalação do Nginx em sistemas Linux, o arquivo de configuração principal é localizado no diretório conf dentro da instalação, com o nome nginx.conf. O arquivo é dividido em blocos lógicos que definem diferentes níveis de configuração. A estrutura geral inclui três partes principais: bloco global, bloco events e bloco http.

O bloco http contém configurações relacionadas ao servidor HTTP, como mapeamento de tipos MIME, definição de logs, parâmetros de conexão e diretivas de roteamento. Dentro dele, é possível definir múltiplos blocos server, cada um represantando um host virtual, e dentro de cada server, podem existir vários blocos location para tratar solicitações específicas.

Exemplo Simplificado de Configuração

# Configurações globais
user nginx nginx;
worker_processes 1;
pid logs/nginx.pid;
error_log logs/error.log error;

events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
    accept_mutex on;
}

http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name localhost;

        location / {
            root html;
            index index.html index.htm;
        }

        location ~* \.html$ {
            proxy_pass http://htmlservers;
        }

        location ~* \.aspx$ {
            proxy_pass http://aspxservers;
        }

        location = /50x.html {
            root html;
            internal;
        }

        error_page 500 502 503 504 /50x.html;
    }

    upstream htmlservers {
        server 192.168.2.50:80;
        server 192.168.2.51:80;
    }

    upstream aspxservers {
        server 192.168.2.50:80;
        server 192.168.2.51:80;
    }

    upstream picservers {
        server 192.168.2.50:80;
        server 192.168.2.51:80;
    }
}

Principais Blocos de Configuração

Bloco Global

Define parâmetros que afetam todo o servidor Nginx. Inclui configurações como usuário e grupo sob os quais o processo será executado, número de processos trabalhadores, caminho do PID e localização dos arquivos de log.

Bloco Events

Controla como os processos trabalhadores lidam com conexões de rede. Inclui diretivas como:

  • worker_connections: número máximo de conexões simultâneas por processo.
  • use: modelo de evento usado (ex: epoll em Linux).
  • multi_accept: permite que um processo aceite múltiplas conexões de uma vez.
  • accept_mutex: evita o problema de "thundering herd" ao sincronizar acesso a novas conexões.

Bloco HTTP

Contém configurações gerais para servidores HTTP, como:

  • Inclusão de arquivos de tipo MIME (include mime.types).
  • Definição de tipo padrão (default_type).
  • Ativação de sendfile para melhor desempenho em transferência de arquivos.
  • Tempo de inatividade para conexões persistentes (keepalive_timeout).

Blocos Server e Location

Cada bloco server representa um host virtual, com configurações específicas de porta, nome de domínio e diretivas de resposta. Dentro de server, os blocos location são usados para mapear URLs a ações específicas, como redirecionamento, proxy ou resposta estática. Eles suportam expressões regulares e correspondência exata, permitindo flexibilidade extrema na gestão de requisições.

Diretivas Essenciais no Bloco Global

user

Especifica o usuário e grupo sob os quais o Nginx irá operar. Exemplo:

user nginx nginx;

É necessário garantir que o usuário tenha permissão para acessar arquivos e diretórios críticos.

worker_processes

Define quantos processos trabalhadores serão iniciados. Recomenda-se usar o valor auto para detectar automaticamente o número de núcleos do CPU:

worker_processes auto;

pid

Define onde o arquivo de PID será armazenado:

pid logs/nginx.pid;

error_log

Configura o caminho e nível de detalhe dos logs de erro:

error_log logs/error.log warn;

Níveis válidos: debug, info, notice, warn, error, crit, alert, emerg. Em produção, warn ou error são recomendados.

Diretivas do Bloco Events

worker_connections

Define o número máximo de conexões simultâneas por processo trabalhador:

worker_connections 1024;

use

Seleciona o modelo de eventos mais eficiente para o sistema operacional:

use epoll;

Em sistemas Linux, epoll é a opção ideal.

multi_accept

Permite que um processo trabalhador aceite várias conexões de uma só vez:

multi_accept on;

accept_mutex

Ativa a exclusão mútua entre processos para evitar "thundering herd". Por padrão, está habilitado:

accept_mutex on;

Tags: nginx configuration events block location block server block

Publicado em 8-18 19:06