Перейти к содержимому
Главная страница » Traefik — reverse proxy для docker

Traefik — reverse proxy для docker

Traefik — это современный reverse proxy и load balancer, который идеально подходит для работы с микросервисами в Docker-окружении. Его главное преимущество — автоматическое обнаружение сервисов и динамическая конфигурация маршрутизации.

Интересный факт: Traefik поддерживает множество провайдеров: Docker, Kubernetes, Consul, Marathon, и многие другие!

Нам потребуется сервер с установленным Docker на сервере, по ссылкам описано, как установить Docker в Ubuntu и Debian.

Готовый сервер с установленным Docker и IP всего от 145 рублей

Для запуска будем использовать официальный Docker образ.

И так создаем папку traefik и переходим в нее:

mkdir traefik && cd traefik

Создаем файл docker-compose:

nano docker-compose.yml
version: "3.9"

services:
  traefik:
    image: traefik:v3.1
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.le.acme.httpchallenge=true
      - --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
      - --certificatesresolvers.le.acme.email=admin@yourdomain.com
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
      # Dashboard
      - --api.dashboard=true
      - --api.insecure=true
      # Redirect HTTP to HTTPS
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"  # Dashboard port
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt
    restart: unless-stopped
    networks:
      - traefik-network

networks:
  traefik-network:
    external: true

Создать сеть

docker network create traefik-network

Создать директорию для сертификатов:

mkdir -p ./letsencrypt
chmod 600 ./letsencrypt

Запустить Traefik:

docker-compose up -d

или

docker compose up -d

Проверим, что контейнер появился командой docker ps

Настройка сервиса с Traefik

Теперь создадим пример сервиса, который будет работать через Traefik:

version: "3.9"

services:
  web-app:
    image: nginx:alpine
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web-app.rule=Host(`app.yourdomain.com`)"
      - "traefik.http.routers.web-app.entrypoints=websecure"
      - "traefik.http.routers.web-app.tls.certresolver=le"
      - "traefik.http.services.web-app.loadbalancer.server.port=80"
    networks:
      - traefik-network

networks:
  traefik-network:
    external: true

Доступ к панели управления

После запуска Traefik панель управления будет доступна по адресу:

http://your-server-ip:8080 — панель Traefik

В панели вы увидите:

  • Все запущенные сервисы
  • Маршруты и правила
  • Статус сервисов
  • SSL сертификаты
  • Метрики производительности

Безопасность

Для продакшн окружения рекомендуется:

Защитить панель управления:

command:
  - --api.dashboard=true
  - --api.insecure=false
  - --api.middlewares=auth
  - --middlewares.auth.basicauth.users=admin:$$2y$$10$$...

Использовать HTTPS для всех сервисов

labels:
  - "traefik.http.routers.app.entrypoints=websecure"
  - "traefik.http.routers.app.tls.certresolver=le"

Настроить rate limiting

labels:
  - "traefik.http.middlewares.ratelimit.ratelimit.burst=100"
  - "traefik.http.routers.app.middlewares=ratelimit"

Мониторинг

Совет: Используйте Grafana для визуализации метрик Traefik и создания красивых дашбордов мониторинга.

Для подключения метрик добавьте в конфигурацию Traefik:

command:
  - --metrics.prometheus=true
  - --metrics.prometheus.b

Traefik — мощный инструмент для управления трафиком в Docker-окружении. Его автоматическое обнаружение сервисов и поддержка SSL сертификатов делают его идеальным выбором для современных микросервисных архитектур.Основные преимущества:

  • ✅ Автоматическое обнаружение сервисов
  • ✅ Динамическая конфигурация
  • ✅ Автоматические SSL сертификаты
  • ✅ Встроенная панель управления
  • ✅ Поддержка множества провайдеров
  • ✅ Высокая производительность

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *