# Guia Rapido - Configurar Nginx (SPA React) ## O Problema URLs como `avanzato.com.br/avaliacao` dao 404 quando acessadas diretamente. Funcionam apenas quando clica no menu (navegacao interna do React). ## A Solucao O Nginx precisa redirecionar todas as rotas para `index.html`. ## Passo a Passo ### 1. Copiar a config do projeto para o servidor No seu Mac, envie o arquivo `nginx.conf` do projeto para o servidor: ```bash # Enviar o arquivo nginx.conf do projeto para o servidor scp /Users/avanzato/Projetos/Avanzato/avanzato-site/app/nginx.conf root@SEU_SERVIDOR:/etc/nginx/sites-available/avanzato ``` Ou, se ja estiver logado no servidor: ```bash # Logar no servidor ssh root@SEU_SERVIDOR # Criar o arquivo de config cat > /etc/nginx/sites-available/avanzato << 'EOF' server { listen 80; server_name avanzato.com.br; root /var/www/avanzato; index index.html; # ESSA LINHA E A CHAVE - redireciona tudo para index.html location / { try_files $uri $uri/ /index.html; } # Cache para assets location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 6M; add_header Cache-Control "public"; } # Seguranca add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; # Bloquear arquivos ocultos location ~ /\. { deny all; } } EOF ``` ### 2. Ativar o site ```bash # Criar link simbolico (ativa o site) ln -s /etc/nginx/sites-available/avanzato /etc/nginx/sites-enabled/avanzato # Remover o default (se existir) rm -f /etc/nginx/sites-enabled/default ``` ### 3. Testar e aplicar ```bash # Testar a configuracao (mostra erros se houver) nginx -t # Se der OK, recarregar o Nginx systemctl reload nginx ``` ### 4. Verificar se funcionou ```bash # Testar uma rota direta curl -I https://avanzato.com.br/avaliacao # Deve retornar HTTP 200, nao 404 ``` --- ## Comandos Uteis | Comando | O que faz | |---------|-----------| | `nginx -t` | Testa a configuracao (sem aplicar) | | `systemctl reload nginx` | Recarrega config sem derrubar o site | | `systemctl restart nginx` | Reinicia o Nginx | | `systemctl status nginx` | Verifica se esta rodando | | `tail -f /var/log/nginx/error.log` | Ver erros em tempo real | --- ## Importante Se voce usa **Apache** em vez de Nginx, a config esta no arquivo `.htaccess` que ja vai no `dist/`: ```apache RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^ index.html [L] ``` Basta garantir que o `.htaccess` esta na raiz do site e o `mod_rewrite` esta ativado.