NgixProxy_Pathfinder/README.md

119 lines
3.5 KiB
Markdown

# NGINX Pathfinder Proxy (Migrated to Traefik)
Solução moderna de Proxy Reverso containerizado, agora utilizando **Traefik** para maior automação, suporte nativo a Docker e SSL gerenciado via Let's Encrypt.
## 🚀 Funcionalidades
### 🛡️ Traefik Proxy
- **SSL Automatizado**: Let's Encrypt nativo com renovação automática.
- **Auto-Discovery**: Detecta automaticamente novos containers Docker com labels específicos.
- **Dashboard**: Interface visual para monitoramento de rotas e serviços.
- **Métricas**: Suporte nativo a Prometheus habilitado por padrão.
- **Logs em JSON**: Ideal para integração com stacks de monitoramento (ELK, Loki).
### ⚡ Performance & Flexibilidade
- **HTTP/2 & HTTP/3**: Suporte a protocolos modernos.
- **Roteamento Dinâmico**: Configuração de backends externos (VMs/LXC) via arquivo dinâmico.
---
## 🛠️ Como Trabalhar neste Repositório
### Pré-requisitos
- Docker & Docker Compose instalados.
- Portas 80 e 443 liberadas.
### 1. Implantar o Proxy (Portainer/Docker Compose)
1. Certifique-se de que os arquivos `traefik.yml` e `dynamic_conf.yml` estão presentes.
2. Crie o arquivo de certificados: `touch acme.json && chmod 600 acme.json`.
3. Inicie os containers:
```bash
docker compose up -d
```
### 2. Adicionar um Novo Site (Backend Externo)
Edite o arquivo `dynamic_conf.yml` para adicionar novas rotas para servidores fora do Docker.
Exemplo de rota:
```yaml
http:
routers:
meu-site:
rule: "Host(`meu-site.com.br`)"
service: meu-servidor
entryPoints: [websecure]
tls: { certResolver: letsencrypt }
services:
meu-servidor:
loadBalancer:
servers:
- url: "http://IP_DO_SERVIDOR"
```
### 3. Adicionar uma nova Aplicação (Containers Docker)
Diferente do Nginx, com Traefik você não precisa editar o proxy para adicionar novos containers. Basta adicionar **labels** no `docker-compose.yml` da sua aplicação.
Exemplo de uma nova app:
```yaml
services:
minha-app:
image: nginx:alpine
networks:
- proxy_network # DEVE estar na mesma rede do Traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.minha-app.rule=Host(`app.itguys.com.br`)"
- "traefik.http.routers.minha-app.entrypoints=websecure"
- "traefik.http.routers.minha-app.tls.certresolver=letsencrypt"
- "traefik.http.services.minha-app.loadbalancer.server.port=80"
networks:
proxy_network:
external: true # Usa a rede já criada pelo proxy
```
*O Traefik detectará essa app assim que ela subir e criará o SSL automaticamente.*
### 4. Dashboard do Traefik
---
## 🏗️ Visão Geral da Stack
---
## 📊 Monitoramento (Zabbix)
O Traefik está configurado para exportar métricas no formato Prometheus. Para monitorar no Zabbix:
1. **Host**: Adicione o host do Traefik no Zabbix.
2. **Template**: Use o template oficial **"Traefik by HTTP"** (que utiliza Prometheus internamente).
3. **Endpoint**: As métricas estão disponíveis em `http://IP_DO_PROXY:8080/metrics`.
4. **Macros**: Se necessário, ajuste a macro `{$TRAEFIK.METRICS.PATH}` para `/metrics`.
---
-```mermaid
+```mermaid
graph TD
Client[Cliente Externo] -->|":80 / :443"| Traefik
subgraph DockerHost["Docker Host"]
Traefik[Traefik Proxy]
App1[Container A]
App2[Container B]
end
subgraph External["Rede Externa (LXC/VM)"]
Gitea[Gitea Server]
Zammad[Zammad Server]
end
Traefik --> App1
Traefik --> App2
Traefik --> Gitea
Traefik --> Zammad
```
---
*Mantido por IT Guys*