Сервер хостинга веб -сайтов (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, с одним рабочим процессом.