Website -Hosting -Server (denken Sie an GitHub Pages), die so konzipiert sind, dass sie sich tief in Traefik für Routing und TLS -Beendigung integrieren.
In Arbeit arbeiten
Erstellen Sie ein Verzeichnis von Verzeichnissen, in dem der Name jedes Verzeichnisses der Hostname einer Website ist, die Sie bedienen möchten, mit seinem Inhalt im Inhalt.
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
Wie die Dateien dorthin gelangen, liegt bei Ihnen. Minio, rsync
, WebDav, ansible
, spielt keine Rolle.
traefik-pages
integriert sich über den HTTP-Anbieter in Traefik. Wenn Traefik die API trifft, listet traefik-pages
die Verzeichnisse mit Websites auf, um die erforderlichen Hostnamen zu erhalten, und gibt eine Konfiguration von Routern für die Verwendung von Traefik zurück. Diese Router haben Regeln, die den Hostnamen aus den Verzeichnissen übereinstimmen, und Dienste, die dem für traefik-pages
angegebenen Punkte entsprechen. Traefik befragt traefik-pages
ständig für eine aktualisierte Konfiguration, sodass neu erstellte Websites schnell aufgegriffen werden.
Erstellen Sie zunächst einen Container für 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
Dies muss nicht in derselben Datei wie Traefik enthalten sein, aber es muss für Traefik mit einem festen Hostnamen und einer IP zugegriffen werden. Wenn Traefik im Host-Modus ausgeführt wird (wie ich), müssen Sie traefik-pages
an eine interne Schnittstelle binden und dies anhören.
Das Etikett ermöglicht es Traefik Autoconfiguration, traefik-pages
zu erkennen. Beachten Sie, dass $TRAEFIK_SERVICE
mit dem von Traefik erstellten Dienstnamen übereinstimmen muss.
Als nächstes müssen Sie einen HTTP -Anbieter für Traefik mithilfe der zuvor konfigurierten Ports und des zuvor konfigurierten Kennworts erstellen.
providers :
...
http :
endpoint :
- " http://[email protected]:5000/.traefik-pages/provider "
Hier können Sie auch das Wahlintervall für traefik-pages
konfigurieren.
Beginnen Sie jetzt einfach Traefik und traefik-pages
, und sie sollten mit der Kommunikation beginnen und Router für Ihre Websites erstellen.
Die Konfiguration für traefik-pages
erfolgt vollständig über Umgebungsvariablen:
$SITES_ROOT
: Verzeichnis, in dem Websites gespeichert sind (erforderlich).
$TRAEFIK_SERVICE
: Service-Name für traefik-pages
, wobei der Verkehr geleitet wird (erforderlich).
$AUTH_PASSWORD
: Grundlegender Authuername, der für den Zugriff auf private URLs ( /.traefik-pages/*
) (erforderlich) erforderlich ist.
$DENY_PREFIXES
: von der Komma getrennte Liste von URL-Präfixen, die ignoriert werden sollen (sofort zurückgeben 404). Standardmäßig leer.
$LOG_INTERNAL
: Ob protokolliert Anfragen für interne URLs (Standard False).
$TRAEFIK_CERT_RESOLVER
: Traefik -Zertifikat Resolver zur Bereitstellung von TLS -Zertifikaten (standardmäßig werden keine Zertifikate angefordert).
$PORT
: port zum Anhören (Standard 5000).
$WORKERS
: Anzahl der Arbeiterprozesse, um Anfragen zu bearbeiten (Standard 1).
traefik-pages
ist in Rost geschrieben und so schnell wie möglich ausgelegt.
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)
Diese Tests wurden mit einem 2600 -fachen mit einem einzigen Arbeiterprozess durchgeführt.