Visão Geral e Pré-requisitos
O Nginx é um servidor web de alto desempenho conhecido por sua capacidade de lidar com conexões concorrentes elevadas através do modelo event-driven. Para operar corretamente em ambientes Linux modernos, o sistema deve utilizar um núcleo (kernel) versão 2.6 ou superior, garantindo suporte nativo ao mecanismo epoll, essencial para a escalabilidade da aplicação.
Preparação do Ambiente Linux
Antes da instalação, recomenda-se desativar regras restritivas de segurança que possam impedir o funcionamento imediato durante testes. As principais configurações envolvem:
- Firewall: O serviço
firewalldpode bloquear portas necessárias. Utilizesystemctl stop firewalldpara paragem temporária ousystemctl disable firewalldpara desativação permanente. - SELinux: O módulo de segurança aprimorado pode interferir nos acessos. Verifique o status com
sestatuse edite o arquivo/etc/selinux/configestabelecendoSELINUX=disabledpara evitar conflitos de permissão durante a configuração inicial.
Métodos de Instalação
A implantação do software pode ser realizada mediante compilador de código fonte ou através de gerenciadores de pacotes. Ambos os métodos possuem vantagens distintas dependendo do nível de controle desejado.
Compilação via Código Fonte
Esta abordagem permite personalização detalhada dos módulos incluídos. Antes de compilar, instale as bibliotecas de dependência necessárias:
# Compilador GCC
yum install -y gcc
# Biblioteca de Expressões Regulares (PCRE)
yum install -y pcre pcre-devel
# Biblioteca de Compressão (Zlib)
yum install -y zlib zlib-devel
# Biblioteca Criptográfica (OpenSSL)
yum install -y openssl openssl-devel
Após baixar o tarball oficial, extraia o conteúdo e navegue até o diretório raiz. Execute os seguintes passos sequenciais:
- Configuração:
./configure. Para definições avançadas, utilize flags como--prefix=/caminho/detalhadopara definir diretórios de binários, logs e arquivos de configuração especificamente. - Compilação:
make. - Instalação:
make install.
Por padrão, a instalação via fonte reside em /usr/local/nginx.
Instalação via Gerenciador de Pacotes (YUM)
Para sistemas baseados em RHEL/CentOS, esta via é mais ágil. Configure o repositório oficial adicionando o arquivo de repo e atualize a lista de packages:
yum install -y yum-utils
# Adicionar repositório nginx no /etc/yum.repos.d/
yum install -y nginx
Este método geralmente instala os arquivos em locais padronizados pelo distribuidor (/etc/nginx, /var/www/html, etc.), faciliatndo a manutenção automática.
Estrutura de Diretórios
Entender a organização dos arquivos é crucial para a administração do servidor. Existem dois tipos principais de estrutura:
- Diretório de Origem: Contém códigos fonte (
src), scripts de automação (auto), documentação (CHANGES) e a ferramenta de configuração (configure). Gera arquivos objetos após compilação. - Diretório de Produção: Local onde o serviço opera. Inclui subpastas para configurações (
conf), logs de acesso e erro (logs), binários executáveis (sbin) e conteúdos estáticos (html).
Gestão de Processos e Serviços
O Nginx opera sob uma arquitetura de múltiplos processos. Um processo Master gerencia as configurações e supervisiona os processos Worker que efetivamente tratam as requisições HTTP.
Comandos de Controle via Sinalização
A comunicação com o processo Master é feita enviando sinais Unix. O PID do master geralmente reside em /usr/local/nginx/logs/nginx.pid.
- Stop (Int/Term): Encerra todos os processos imediatamente.
- Quit: Aguarda o término das requisições atuais antes de encerrar os Workers, garantindo "Graceful Shutdown".
- HUP: Recarrega a configuração sem interromper o serviço (Reconfiguração dinâmica).
- USR1: Abre novos arquivos de log, útil para rotação de logs manualmente.
- USR2: Inicia atualização "zero-downtime", mantendo o processo antigo ativo enquanto inicia o novo.
Controle via Executável Binário
O binário principal também aceita opções de linha de comando na pasta sbin:
./nginx -s reload # Releitura de conf
./nginx -s stop # Parada rápida
./nginx -t # Teste de sintaxe do config
./nginx -v # Versão instalada
Análise do Arquivo de Configuração Principal
O arquivo nginx.conf organiza as diretrizes em blocos hierárquicos: Global, Events e HTTP.
Bloco Global
Define parâmetros de escopo geral para o servidor:
user: Define qual usuário Linux executar os workers (ex:www-dataounobody). Importante para permissões de leitura em arquivos estáticos.worker_processes: Número de processos filhos. Recomenda-se igualar ao número de núcleos de CPU disponíveis.error_logeaccess_log: Definição de rotas e níveis de severidade para os logs de atividade e falhas.
Bloco Events
Gerencia a conexão de rede entre o servidor e os clientes:
events {
worker_connections 1024;
multi_accept on;
}
Bloco HTTP
O núcleo da configuração de serviços web. Contém instruções de proxy, caches e definições de servidores virtuais (server):
server: Agrupa configurações específicas de um domínio ou porta.listen: Especifica o IP e Porta (ex:80). Pode ser marcado comodefault_server.server_name: Nome do domínio virtual (suporta wildcards e regex).location: Regras de roteamento baseadas na URI da requisição.
Atualização Controlada (Zero Downtime)
Para atualizar a versão do Nginx sem interromper o atendimento, utilize o procedimento de upgrade suave:
- Prepare o novo binário (compile ou baixe a nova versão).
- Substitua o arquivo executável no diretório
sbinpelo novo compilado. - Envie o sinal
USR2para iniciar o novo processo Master (agora há dois Masters rodando). - Verifique se o novo servidor está operante.
- Envie o sinal
QUITpara o velho processo Master, permitindo-o encerrar suavemente.
Otimizações Operacionais
Caminho do Sistema (PATH)
Evite navegar constantemente para o diretório de binários. Adicione o caminho de execução à variável de ambiente do usuário no arquivo /etc/profile:
export PATH=$PATH:/usr/local/nginx/sbin
Aplicar as alterações com source /etc/profile habilita o uso do comando nginx de qualquer terminal.
Integração com Systemd
Configure o serviço para ser gerenciado pelo sistema operacional (init system). Crie o arquivo /etc/systemd/system/nginx.service com as diretivas adequadas para ExecStart, ExecReload e PIDFile. Isso permite comandos padrão como systemctl restart nginx e garante que o serviço inicie automaticamente após boot.