Servidor de alojamiento de sitios web (piense en las páginas de GitHub) diseñado para integrarse profundamente con Traefik para el enrutamiento y la terminación TLS.
Trabajo en progreso
Cree un directorio de directorios, donde el nombre de cada directorio es el nombre de host de un sitio al que desea servir, con su contenido en el interior.
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
Cómo llegan los archivos allí depende de usted. Minio, rsync
, WebDav, ansible
, no importa.
traefik-pages
se integra con Traefik a través del proveedor HTTP. Cuando Traefik golpea la API, traefik-pages
enumera los directorios que contienen sitios para obtener los nombres de host necesarios, y devuelve una configuración de enrutadores para que Traefik use. Estos enrutadores tienen reglas que coinciden con los nombres de host de los directorios y los servicios que coinciden con el especificado para traefik-pages
. Traefik encuesta constantemente traefik-pages
para una configuración actualizada, por lo que los sitios recién creados se recogerán rápidamente.
Primero, cree un contenedor 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
Esto no necesita estar en el mismo archivo que Traefik, pero debe ser accesible para Traefik usando un nombre de host y IP fijo. Si Traefik se está ejecutando en modo host (como lo hago), deberá vincular traefik-pages
a una interfaz interna y escuchar eso.
La etiqueta permite a Traefik Autoconfiguration para detectar traefik-pages
. Tenga en cuenta que $TRAEFIK_SERVICE
debe coincidir con el nombre del servicio creado por Traefik.
A continuación, deberá crear un proveedor HTTP para Traefik, utilizando los puertos y la contraseña previamente configurados.
providers :
...
http :
endpoint :
- " http://[email protected]:5000/.traefik-pages/provider "
Aquí también puede configurar el intervalo de votación para traefik-pages
.
Ahora, simplemente comience a Traefik y traefik-pages
, y deben comenzar a comunicar y crear enrutadores para sus sitios.
La configuración para traefik-pages
se realiza por completo a través de variables de entorno:
$SITES_ROOT
: directorio donde se almacenan los sitios (se requieren).
$TRAEFIK_SERVICE
: Nombre del servicio para traefik-pages
, donde se enrutará el tráfico (requerido).
$AUTH_PASSWORD
: nombre de usuario básico de autores requerido para el acceso a URL privadas ( /.traefik-pages/*
) (requerido).
$DENY_PREFIXES
: Lista de prefijos de URL separados por comas para ignorar (devolver inmediatamente 404). Vacío por defecto.
$LOG_INTERNAL
: si se debe registrar las solicitudes de URL internas (falso predeterminado).
$TRAEFIK_CERT_RESOLVER
: Traefik Certificate Resolver para utilizar para aprovisionar los certificados TLS (por defecto, no se solicitarán certificados).
$PORT
: puerto para escuchar (predeterminado 5000).
$WORKERS
: número de procesos de trabajadores para manejar las solicitudes (predeterminado 1).
traefik-pages
está escrito en óxido y está diseñado para ser lo más rápido posible.
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)
Estas pruebas se ejecutaron en un 2600X, con un proceso de trabajo único.