Сервер хостинга веб -сайтов (Think Github Pages), предназначенный для глубокой интеграции с Traefik для маршрутизации и завершения TLS.
Работа в процессе
Создайте каталог каталогов, где имя каждого каталога - это имя хоста сайта, который вы хотите обслуживать, с его содержанием внутри.
/mnt/sites
├── example.com
│ └── index.html
└── othersite.example.com
└── index.html
То, как файлы добраются туда, зависит от вас. Minio, rsync
, WebDav, ansible
, не имеет значения.
traefik-pages
интегрируется с Traefik через провайдера HTTP. Когда Traefik попадает в API, traefik-pages
перечисляет каталоги, содержащие сайты, чтобы получить необходимые имена хостов, и возвращает конфигурацию маршрутизаторов для использования Traefik. Эти маршрутизаторы имеют правила, соответствующие именам хост из каталогов, и услуги, соответствующие тем, что указано для traefik-pages
. Traefik постоянно опрашивает traefik-pages
для обновленной конфигурации, поэтому вновь созданные сайты будут быстро подхвачены.
Во-первых, создайте контейнер для 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, но он должен быть доступен для Traefik, используя фиксированное имя хоста и IP. Если Traefik работает в режиме хоста (как и я), вам нужно будет связывать traefik-pages
с внутренним интерфейсом и прослушать это.
Этикетка позволяет автоконфигурации Traefik для обнаружения traefik-pages
. Обратите внимание, что $TRAEFIK_SERVICE
должен соответствовать названию услуги, созданного Traefik.
Затем вам нужно будет создать поставщика HTTP для Traefik, используя ранее настроенные порты и пароль.
providers :
...
http :
endpoint :
- " http://[email protected]:5000/.traefik-pages/provider "
Здесь вы также можете настроить интервал голосования для traefik-pages
.
Теперь просто запустите Traefik и traefik-pages
, и они должны начать общаться и создавать маршрутизаторы для ваших сайтов.
Конфигурация для traefik-pages
выполняется полностью через переменные среды:
$SITES_ROOT
: каталог, где хранятся сайты (требуются).
$TRAEFIK_SERVICE
: имя обслуживания для traefik-pages
, где будет направлен трафик (требуется).
$AUTH_PASSWORD
: базовое имя пользователя Auth, необходимое для доступа к частным URL ( /.traefik-pages/*
) (требуется).
$DENY_PREFIXES
: разделенный запятой список префиксов URL, чтобы игнорировать (немедленно возврат 404). Пусто по умолчанию.
$LOG_INTERNAL
: следует ли регистрировать запросы на внутренние URL -адреса (по умолчанию false).
$TRAEFIK_CERT_RESOLVER
: TRAEFIK SERTORVER для использования для предоставления сертификатов TLS (по умолчанию сертификатов не будет запрашивано).
$PORT
: порт для прослушивания (по умолчанию 5000).
$WORKERS
: количество рабочих процессов для обработки запросов (по умолчанию 1).
traefik-pages
написан в ржавчине и предназначен как можно быстрее.
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)
Эти тесты проводились на 2600X, с одним рабочим процессом.