117 lines
2.6 KiB
Markdown
117 lines
2.6 KiB
Markdown
# 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.
|