Serveur d'hébergement de site Web (Pensez GitHub Pages) conçu pour s'intégrer profondément à Trafik pour le routage et la terminaison TLS.
Travail en cours
Créez un répertoire d'annuaires, où le nom de chaque répertoire est le nom d'hôte d'un site que vous souhaitez servir, avec son contenu à l'intérieur.
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
Comment les fichiers y arrivent. MINIO, rsync
, WebDAV, ansible
, n'a pas d'importance.
traefik-pages
s'intègre à Trafik via le fournisseur HTTP. Lorsque Trafik frappe l'API, traefik-pages
répertorie les répertoires contenant des sites pour obtenir les noms d'hôte requis et renvoie une configuration de routeurs à utiliser. Ces routeurs ont des règles correspondant aux noms d'hôtes des répertoires et des services correspondant à celui spécifié pour traefik-pages
. Trafik interroge constamment traefik-pages
pour une configuration mise à jour, de sorte que les sites nouvellement créés seront rapidement récupérés.
Tout d'abord, créez un conteneur pour 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
Cela n'a pas besoin d'être dans le même fichier que Trafik, mais il doit être accessible à Trafik en utilisant un nom d'hôte fixe et IP. Si Trafik s'exécute en mode hôte (comme moi), vous devrez lier traefik-pages
à une interface interne et écouter cela.
L'étiquette permet à Trafik Autoconfiguration de détecter traefik-pages
. Notez que $TRAEFIK_SERVICE
doit correspondre au nom du service créé par Trafik.
Ensuite, vous devrez créer un fournisseur HTTP pour Trafik, en utilisant les ports et le mot de passe précédemment configurés.
providers :
...
http :
endpoint :
- " http://[email protected]:5000/.traefik-pages/provider "
Ici, vous pouvez également configurer l'intervalle de sondage pour traefik-pages
.
Maintenant, commencez simplement Trafik et traefik-pages
, et ils devraient commencer à communiquer et à créer des routeurs pour vos sites.
La configuration de traefik-pages
se fait entièrement via des variables d'environnement:
$SITES_ROOT
: répertoire où les sites sont stockés (requis).
$TRAEFIK_SERVICE
: nom du service pour traefik-pages
, où le trafic sera acheminé (requis).
$AUTH_PASSWORD
: nom d'utilisateur de base Auth requis pour l'accès aux URL privées ( /.traefik-pages/*
) (requis).
$DENY_PREFIXES
: liste de préfixes URL séparée par des virgules à ignorer (retour immédiatement 404). Vide par défaut.
$LOG_INTERNAL
: s'il faut enregistrer les demandes d'URL internes (par défaut false).
$TRAEFIK_CERT_RESOLVER
: Resolver de certificat Trafik à utiliser pour provisionner les certificats TLS (par défaut, aucun certificat ne sera demandé).
$PORT
: port à écouter (par défaut 5000).
$WORKERS
: nombre de processus de travail pour gérer les demandes (par défaut 1).
traefik-pages
est écrit en rouille et conçu pour être aussi rapide que possible.
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)
Ces tests ont été exécutés sur un 2600X, avec un seul processus de travailleur.