Server hosting situs web (pikirkan halaman github) yang dirancang untuk sangat terintegrasi dengan Traefik untuk routing dan penghentian TLS.
Bekerja dalam proses
Buat direktori direktori, di mana nama setiap direktori adalah nama host dari situs yang ingin Anda layani, dengan kontennya di dalam.
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
Bagaimana file sampai di sana terserah Anda. Minio, rsync
, webdav, ansible
, doesn't matter.
traefik-pages
integrates with Traefik via the HTTP provider. When Traefik hits the API, traefik-pages
lists the directories containing sites to get the hostnames required, and returns a configuration of routers for Traefik to use. These routers have rules matching the hostnames from the directories, and services matching the one specified for traefik-pages
. Traefik constantly polls traefik-pages
for an updated configuration, so newly created sites wll be quickly picked up on.
First, create a container for 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
Ini tidak perlu berada dalam file yang sama dengan Traefik, tetapi memang perlu diakses oleh Traefik menggunakan nama host tetap dan IP. If Traefik is running in host mode (as I do), you'll need to bind traefik-pages
to an internal interface, and listen to that.
The label enables traefik autoconfiguration to detect traefik-pages
. Note that $TRAEFIK_SERVICE
must match the service name created by traefik.
Selanjutnya, Anda harus membuat penyedia HTTP untuk Traefik, menggunakan port dan kata sandi yang sebelumnya dikonfigurasi.
providers :
...
http :
endpoint :
- " http://[email protected]:5000/.traefik-pages/provider "
Here you can also configure the polling interval for traefik-pages
.
Now, simply start Traefik and traefik-pages
, and they should begin communicating and creating routers for your sites.
Configuration for traefik-pages
is done entirely through environment variables:
$SITES_ROOT
: Directory where sites are stored (required).
$TRAEFIK_SERVICE
: Service name for traefik-pages
, where traffic will be routed (required).
$AUTH_PASSWORD
: Basic auth username required for access to private URLs ( /.traefik-pages/*
) (required).
$DENY_PREFIXES
: Comma-separated list of URL prefixes to ignore (immediately return 404). Kosong secara default.
$LOG_INTERNAL
: Whether to log requests for internal URLs (default false).
$TRAEFIK_CERT_RESOLVER
: Traefik certificate resolver to use to provision TLS certificates (by default no certificates will be requested).
$PORT
: Port to listen on (default 5000).
$WORKERS
: Number of worker processes to handle requests (default 1).
traefik-pages
is written in Rust, and designed to be as fast as 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)
Tes ini dijalankan pada 2600X, dengan satu proses pekerja.