网站托管服务器(Think GitHub页面)旨在与Traefik深入集成以进行路由和TLS终止。
正在进行中
创建目录目录的目录,其中每个目录的名称是您要使用的网站的主机名,其中包含其内容。
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
文件如何到达那里取决于您。 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
这不需要与Traefik相同的文件,但是确实需要使用固定的主机名和IP访问Traefik。 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.
接下来,您需要使用先前配置的端口和密码为Traefik创建HTTP提供商。
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).默认情况下为空。
$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)
这些测试是在2600倍上进行的,具有单个工作过程。