# Nginx configuracao: guia passo a passo do zero

> O guia passo a passo do Nginx ensina a configurar um servidor web do zero, desde a instalação até a otimização básica. O tutorial aborda etapas práticas para evitar erros comuns e melhorar a performance, incluindo ajustes de arquivos de configuração e dicas para servidores de produção.

*PosUp · Apps e Software · 28 de julho de 2026 · Patrícia Lemos*

Configurar um servidor Nginx do zero parece complexo, mas com as etapas certas você evita erros comuns e ganha performance. Este guia cobre desde a instalação até a otimização básica, com dicas práticas para cada passo.

## Como configurar e otimizar um servidor Nginx do zero

Configurar um servidor Nginx do zero é o primeiro passo para ter controle total sobre a entrega de conteúdo web. Para configurar e otimizar um servidor Nginx do zero, instale o pacote, edite o arquivo principal de configuração, crie um bloco server para seu domínio e ajuste parâmetros de performance como worker_processes e buffer sizes. O resultado esperado é um servidor estático ou proxy reverso funcional, com segurança básica e consumo eficiente de recursos. Pré-requisitos: acesso root a uma máquina Linux (Ubuntu ou Debian, mas os comandos são similares em outras distribuições) e um domínio apontado para o IP do servidor.

## Passo 1: Instalar o Nginx

O Nginx está nos repositórios oficiais da maioria das distribuições. No Ubuntu/Debian, execute sudo apt update && sudo apt install nginx -y. Após a instalação, o serviço inicia automaticamente. Verifique com sudo systemctl status nginx. Se o firewall estiver ativo, libere as portas 80 (HTTP) e 443 (HTTPS): sudo ufw allow 'Nginx Full'. **Erro comum:** esquecer de liberar as portas no firewall e tentar acessar o servidor pelo navegador, o resultado é um timeout ou conexão recusada.

## Passo 2: Localizar e entender o arquivo de configuração principal

O arquivo principal fica em /etc/nginx/nginx.conf. Nele você define diretivas globais como worker_processes (número de processos worker, idealmente igual ao número de CPUs) e worker_connections (conexões simultâneas por worker). Um bom ponto de partida para servidores com 2 CPUs: worker_processes 2; e worker_connections 1024;. O arquivo inclui por padrão os diretórios sites-enabled e conf.d. **Dica:** nunca edite diretamente os arquivos em sites-enabled; crie os blocos server em sites-available e ative com link simbólico.

## Passo 3: Criar um bloco server para seu domínio

Crie um arquivo em /etc/nginx/sites-available/seu-dominio.com com o seguinte conteúdo mínimo:

server { listen 80; server_name seu-dominio.com www.seu-dominio.com; root /var/www/seu-dominio.com/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } }

Depois, ative o site: sudo ln -s /etc/nginx/sites-available/seu-dominio.com /etc/nginx/sites-enabled/. **Erro comum:** esquecer de criar o diretório root (ex.: /var/www/seu-dominio.com/html) e tentar acessar o site, o Nginx retorna 403 Forbidden.

## Passo 4: Testar e recarregar a configuração

Antes de recarregar, teste a sintaxe: sudo nginx -t. Se tudo estiver correto, a saída será algo como "syntax is ok" e "test is successful". Então recarregue: sudo systemctl reload nginx. **Dica:** use nginx -t sempre que modificar qualquer arquivo de configuração, um erro de sintaxe pode derrubar o servidor inteiro.

## Passo 5: Otimizações básicas de performance

No arquivo /etc/nginx/nginx.conf, ajuste:

- sendfile on;, acelera a entrega de arquivos estáticos.
- tcp_nopush on;, melhora a eficiência de rede.
- keepalive_timeout 65;, tempo de conexão mantida viva.
- client_max_body_size 10M;, tamanho máximo de upload (ajuste conforme necessidade).

Para sites com muitos arquivos estáticos (CSS, JS, imagens), adicione cache de cabeçalhos no bloco server: location ~_\.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, no-transform"; }__Erro comum:_* definir expires muito longo sem planejar atualizações de versão, o navegador pode servir arquivos desatualizados. Use versionamento nos nomes dos arquivos ou hashes.

## Checklist do que foi feito

- [ ] Nginx instalado e rodando
- [ ] Portas 80 e 443 liberadas no firewall
- [ ] Arquivo nginx.conf ajustado com worker_processes e worker_connections
- [ ] Bloco server criado em sites-available e ativado em sites-enabled
- [ ] Diretório root criado com permissões corretas
- [ ] Configuração testada com nginx -t
- [ ] Serviço recarregado sem erros
- [ ] Otimizações de sendfile, tcp_nopush e cache aplicadas

## FAQ sobre configuracao Nginx

### Como faço para o Nginx iniciar automaticamente com o sistema?

Use sudo systemctl enable nginx. Isso cria os links simbólicos necessários para o serviço iniciar durante o boot. Para verificar se já está habilitado, execute sudo systemctl is-enabled nginx.

### O que significa o erro "403 Forbidden" no Nginx?

Geralmente indica que o diretório root não existe ou as permissões estão incorretas. Verifique se o caminho em root existe e se o usuário www-data (padrão no Ubuntu) tem permissão de leitura (e execução para diretórios). Use sudo chown -R www-data:www-data /var/www/seu-dominio.com.

### Como configurar HTTPS no Nginx?

A forma mais simples é com o Certbot da Let's Encrypt: instale sudo apt install certbot python3-certbot-nginx e execute sudo certbot --nginx -d seu-dominio.com. O Certbot edita automaticamente o bloco server e agenda a renovação.

### Qual a diferença entre sites-available e sites-enabled?

sites-available armazena todos os blocos server criados, mesmo os inativos. sites-enabled contém apenas links simbólicos para os arquivos que devem ser carregados. Isso permite desativar um site sem deletar sua configuração.

### Como redirecionar HTTP para HTTPS no Nginx?

No bloco server que escuta na porta 80, adicione: return 301 https://$server_name$request_uri;. Isso redireciona permanentemente todo tráfego HTTP para a versão segura. Lembre de ter o bloco HTTPS configurado.

### O que é proxy reverso e como configuro no Nginx?

Proxy reverso faz o Nginx receber requisições e encaminhá-las para outro servidor (ex.: uma aplicação Node.js na porta 3000). No bloco server, use: location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; }.

---

Fonte (canonical): https://posup.com.br/apps-e-software/nginx-configuracao-guia-passo-a-passo-do-zero/
