119 lines
3.5 KiB
Markdown
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* |