Servidor de hospedagem de sites (pense em páginas do GitHub) projetado para integrar profundamente o Traefik para o roteamento e o término do TLS.
Trabalho em andamento
Crie um diretório de diretórios, onde o nome de cada diretório é o nome do host de um site que você deseja servir, com seu conteúdo dentro.
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
Como os arquivos chegam lá de acordo com você. Minio, rsync , Webdav, ansible , não importa.
traefik-pages se integra ao Traefik através do provedor HTTP. Quando o Traefik atinge a API, traefik-pages lista os diretórios que contêm sites para obter os nomes de hosts necessários e retorna uma configuração de roteadores para o Traefik usar. Esses roteadores têm regras que correspondem aos nomes de host dos diretórios e dos serviços que correspondem ao especificado para traefik-pages . O Traefik constantemente pesquisou traefik-pages para uma configuração atualizada; portanto, os sites recém-criados serão rapidamente adquiridos.
Primeiro, crie um contêiner para traefik-pages :
traefik-pages :
image : theorangeone/traefik-pages:latest
volumes :
- ./sites:/mnt/sites:ro
environment :
- SITES_ROOT=/mnt/sites
- TRAEFIK_SERVICE=traefik-pages@docker
- AUTH_PASSWORD=hunter2
labels :
- traefik.enable=true Isso não precisa estar no mesmo arquivo que o Traefik, mas precisa ser acessível ao Traefik usando um nome de host fixo e IP. Se o Traefik estiver em execução no modo host (como eu), você precisará vincular traefik-pages a uma interface interna e ouvir isso.
O rótulo permite que o Traefik Autoconfiguration para detectar traefik-pages . Observe que $TRAEFIK_SERVICE deve corresponder ao nome do serviço criado por Traefik.
Em seguida, você precisará criar um provedor HTTP para Traefik, usando as portas e a senha configurada anteriormente.
providers :
...
http :
endpoint :
- " http://[email protected]:5000/.traefik-pages/provider " Aqui você também pode configurar o intervalo de votação para traefik-pages .
Agora, basta iniciar o traefik e traefik-pages , e eles devem começar a se comunicar e criar roteadores para seus sites.
A configuração para traefik-pages é feita inteiramente através de variáveis de ambiente:
$SITES_ROOT : diretório onde os sites são armazenados (exigidos).
$TRAEFIK_SERVICE : nome do serviço para traefik-pages , onde o tráfego será roteado (exigido).
$AUTH_PASSWORD : nome de usuário BASIC AUTH necessário para o acesso a URLs privados ( /.traefik-pages/* ) (obrigatório).
$DENY_PREFIXES : Lista separada por vírgula de prefixos de URL para ignorar (retornar imediatamente 404). Vazio por padrão.
$LOG_INTERNAL : se deve registrar solicitações de URLs internos (padrão false).
$TRAEFIK_CERT_RESOLVER : resolvedor de certificado Traefik a ser usado para provisionar certificados TLS (por padrão, nenhum certificado será solicitado).
$PORT : porta para ouvir (padrão 5000).
$WORKERS : número de processos trabalhadores para lidar com solicitações (padrão 1).
traefik-pages é escrito em ferrugem e projetado para ser o mais rápido possível.
Requests per second: 6786.85 [#/sec] (mean)
Time per request: 14.734 [ms] (mean)
Time per request: 0.147 [ms] (mean, across all concurrent requests)
Transfer rate: 1471.37 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 2
Processing: 3 15 5.5 14 51
Waiting: 2 14 5.5 14 51
Total: 3 15 5.5 14 51
Percentage of the requests served within a certain time (ms)
50% 14
66% 16
75% 17
80% 18
90% 21
95% 25
98% 30
99% 35
100% 51 (longest request)
Esses testes foram executados em um 2600X, com um único processo de trabalhador.