Определение простыми словами
Traefik — это reverse-proxy, который сам подхватывает запущенные сервисы и роутит на них входящие запросы. Не нужно вручную писать конфиги для каждого нового контейнера: достаточно навесить лейблы при запуске Docker-контейнера, и Traefik подхватит маршрут, выдаст SSL и поднимет HTTPS-эндпоинт.
В отличие от классического Nginx, где нужно править конфиг и делать reload при каждом изменении, Traefik работает в режиме «динамической конфигурации». Он умеет встраиваться в Docker, Kubernetes, Consul, etcd, AWS ECS — и узнаёт о новых сервисах через их API. Версия 3.x вышла в 2024 и стала основной для production-инсталляций.
Сравнение (таблица)
| Параметр | Nginx | Traefik |
|---|---|---|
| Конфигурация | Статическая, файлы | Динамическая, лейблы и API |
| Let’s Encrypt | Через certbot | Встроенный ACME |
| Docker-интеграция | Нет | Из коробки |
| Метрики | nginx-exporter | Prometheus встроен |
| Дашборд | Нет | Web-UI |
| Скорость | Эталон | На 5–15% медленнее |
Кейсы использования
- Self-hosted сервисы на одном VPS: Vaultwarden, Nextcloud, Gitea, n8n — каждому свой поддомен и SSL без правки конфигов.
- Микросервисная архитектура в Docker Swarm или Kubernetes — Traefik автоматически добавляет новые поды в балансировку.
- CI/CD-пайплайны с превью-окружениями для каждого pull request — поддомен поднимается на лету.
- Негативный кейс: статический сайт с одной страницей и без частых обновлений — выгоднее простой Nginx, Traefik здесь избыточен.
Технические детали
# минимальный docker-compose для Traefik v3 + сервис
cat > docker-compose.yml <<'EOF'
services:
traefik:
image: traefik:v3.2
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.le.acme.email=admin@example.com
- --certificatesresolvers.le.acme.storage=/acme.json
- --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./acme.json:/acme.json
whoami:
image: traefik/whoami
labels:
- traefik.enable=true
- traefik.http.routers.whoami.rule=Host(`example.com`)
- traefik.http.routers.whoami.entrypoints=websecure
- traefik.http.routers.whoami.tls.certresolver=le
EOF
touch acme.json && chmod 600 acme.json
docker compose up -d
Файл acme.json хранит выпущенные сертификаты — права 600 обязательны, иначе Traefik откажется работать. Дашборд (порт 8080) в production закрывайте firewall’ом или basic auth.
🔥 Где это применяется
Частые вопросы
Стоит ли менять Nginx на Traefik?
Если у вас один-два статических сайта — нет, Nginx надёжнее и быстрее. Если контейнеров десятки и они часто меняются — Traefik избавляет от рутины с конфигами.
Как Traefik выпускает SSL?
Через встроенный ACME-клиент. Достаточно указать email и тип challenge (HTTP-01 или DNS-01). Сертификаты сохраняются в acme.json и автоматически обновляются.
Безопасно ли пробрасывать /var/run/docker.sock в Traefik?
Сокет даёт root-доступ к хосту. В production используйте docker-socket-proxy с фильтрами read-only либо разверните Traefik с привязкой к API через TCP с TLS-сертификатами.