Использование Traefik в Docker в качестве реверс-прокси

    Команда Simple-Server
    03.06.2026
    9 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Предварительные требования

    Для использования Traefik нам понадобится следующее:

    • Один сервер или одна виртуальная машина с любым предустановленным дистрибутивом Linux. Желательно выбрать Ubuntu, Debian, RHEL или SLES в связи с тем что заявлены в качестве поддерживаемых для системы контейнеризации Docker. Для них всегда выпускаются стабильные и актуальные версии Docker. Мы будем использовать Ubuntu 22.04.

    • Установленный Docker и Docker Compose. Процесс установки Docker и Docker Compose на Ubuntu описан в нашей инструкции. Также можно воспользоваться готовым образом с предустановленным Docker при создании облачного сервера. Для этого в разделе «Образ» необходимо перейти во вкладку «Маркетплейс» и найти образ с Docker.

    Один сервер или одна виртуальная машина с любым предустановленным дистрибутивом Linux. Желательно выбрать Ubuntu, Debian, RHEL или SLES в связи с тем что заявлены в качестве поддерживаемых для системы контейнеризации Docker. Для них всегда выпускаются стабильные и актуальные версии Docker. Мы будем использовать Ubuntu 22.04.

    Установленный Docker и Docker Compose. Процесс установки Docker и Docker Compose на Ubuntu описан в нашей инструкции. Также можно воспользоваться готовым образом с предустановленным Docker при создании облачного сервера. Для этого в разделе «Образ» необходимо перейти во вкладку «Маркетплейс» и найти образ с Docker.

    В качестве используемых приложений будут запущены два контейнера с веб-сервером Nginx. При переходе по доменному имени каждого контейнера будет отображаться соответствующая строка. Создание контейнеров будет описано в отдельном разделе текущей статьи.

    Создание облачного сервера

    В первую очередь нам нужно арендовать облачный сервер.

    1. Переходим на страницу авторизации и входим в аккаунт при помощи логина или адреса электронной почты и пароля или при помощи Passkey, ВКонтакте, GitHub, Google.

    2. После успешной авторизации отобразится панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».

    3. Выбираем операционную систему, которая будет установлена на сервер. В нашем случае нам необходима Ubuntu версии 22.04.

    Также в этом же разделе можно выбрать уже готовый образ с Docker, перейдя во вкладку «Маркетплейс»:

    1. Выбираем регион, в котором будет находиться наш сервер. Выбирать рекомендуется тот регион, который ближе всего находится к вам физически. У каждого доступного региона справа вверху отображается ping, т.е. время, необходимое для передачи данных с вашего компьютера на сервер. Чем меньше указанное время, тем быстрее будет осуществляться передача данных.

    2. Далее выбираем необходимую конфигурацию для сервера. Так как В этом материале будут рассмотрены Traefik и приложения без реальной нагрузки, то для конфигурации сервера можно выбрать минимальную конфигурацию, включающую в себя одноядерный процессор, 1 ГБ оперативной памяти и 15 ГБ места на NVMe-диске. В реальности вам необходимо выбирать ту конфигурацию, которая будет удовлетворять вашим потребностям при работе с контейнерными приложениями и их образами. Стоит отметить, что сам Docker потребляет минимум ресурсов. Расчет необходимой конфигурации происходит из той нагрузки, которую будет использовать контейнер. Выбираем соответствующий тариф:

    3. Далее необходимо решить, будет ли сервер доступен из внешний сети или же только из приватной (частной) сети. Если не уверены в настройках, оставьте эти параметры без изменений.

    4. По желанию можно оформить дополнительные услуги, включая резервные копии и защиту от DDoS-атак (последняя доступна только в Санкт-Петербурге и Москве):

    5. Также заранее можно загрузить SSH-ключ, чтобы не входить на север при помощи пароля.

    6. Можно задать необходимое имя для сервера которое будет отображаться в панели управления, а также выбрать проект.

    7. Для создания сервера необходимо нажать на кнопку «Заказать»:

    Если на вашем аккаунте недостаточно средств, то будет выведено предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP-адрес, логин и пароль для подключения.

    Настройка и запуск Traefik

    Для начала произведем настройку Traefik.

    1. Создаем директорию для хранения конфигурационных файлов и переходим в нее:
    mkdir ~/test-traefik && cd ~/test-traefik
    1. Внутри корневой директории проекта создадим три директории: одну для хранения конфигурационного файла Traefik, а две другие для хранения конфигурационных файлов приложений, которые будут использовать Traefik:

    2. Создаем основной конфигурационный файл для Traefik с именем traefik.yml в ранее созданной директории traefik:

    И вставляем следующий код:

    entryPoints: web: address: ":80" providers: docker: exposedByDefault: false api: dashboard: true insecure: true
    • entryPoints — точки входа (порт и протокол), через которые Traefik будет принимать запросы. Они определяют, на каком порту и IP-адресе сервис будет слушать трафик.**
      **
    * `web` — уникальное имя для точки входа, которое можно использовать для ее указания в маршрутах. В данном примере в качестве имени используется имя `web`. * `address: ":80"` — указывает, что точка входа будет принимать трафик на порту 80 (HTTP) на всех доступных сетевых интерфейсах в системе.
    • providers — источники информации о том, какие маршруты и сервисы нужно использовать (например, Docker, Kubernetes, файлы и т.д.).
    * `docker` — включение и использование провайдера Docker. При использовании провайдера `docker` Traefik автоматически обнаруживает запущенные контейнеры и маршруты к ним. * `exposedByDefault: false` — отключает автоматическое добавление всех Docker-контейнеров как сервисов. Это делает конфигурацию намного безопаснее: только контейнеры с явным включением через `labels` (`traefik.enable=true`) будут маршрутизироваться (принимать и обрабатывать трафик).
    • api — содержит настройки административного API и встроенного веб-интерфейса мониторинга Traefik.
    * `dashboard: true` — включает веб-панель мониторинга Traefik, при помощи которой можно отслеживать активные маршруты, точки входа и сервисы. Веб-панель не является обязательным компонентом и может быть выключена при помощи значения `false`. * `insecure: true` — позволяет получить доступ до веб-панели мониторинга по протоколу HTTP. Это удобно для тестирования и ознакомления с системой, однако небезопасно использовать в production-окружении. Чтобы использовать веб-панель только про защищенному протоколу HTTPS, необходимо указать значение `false`.
    • web — уникальное имя для точки входа, которое можно использовать для ее указания в маршрутах. В данном примере в качестве имени используется имя web.

    • address: ":80" — указывает, что точка входа будет принимать трафик на порту 80 (HTTP) на всех доступных сетевых интерфейсах в системе.

    • docker — включение и использование провайдера Docker. При использовании провайдера docker Traefik автоматически обнаруживает запущенные контейнеры и маршруты к ним.

    • exposedByDefault: false — отключает автоматическое добавление всех Docker-контейнеров как сервисов. Это делает конфигурацию намного безопаснее: только контейнеры с явным включением через labels (traefik.enable=true) будут маршрутизироваться (принимать и обрабатывать трафик).

    • dashboard: true — включает веб-панель мониторинга Traefik, при помощи которой можно отслеживать активные маршруты, точки входа и сервисы. Веб-панель не является обязательным компонентом и может быть выключена при помощи значения false.

    • insecure: true — позволяет получить доступ до веб-панели мониторинга по протоколу HTTP. Это удобно для тестирования и ознакомления с системой, однако небезопасно использовать в production-окружении. Чтобы использовать веб-панель только про защищенному протоколу HTTPS, необходимо указать значение false.

    Подготовка конфигурационных файлов для приложений

    Теперь подготовим конфигурационные файлы для приложений, которые будут использовать Traefik в качестве обратного прокси-сервера. Для этого будут подняты два контейнера с Nginx. При переходе по адресу каждого контейнера будет отображаться соответствующее сообщение.

    1. Создаем конфигурационный Nginx файл для первого приложения:
    server { listen 80; server_name app1.test.com; location / { root /usr/share/nginx/html; index index.html; } }

    В качестве имени сервера укажем локальное доменное имя app1.test.com. Можно указать как IP-адрес, так и доменное имя. Если у вас еще нет глобального доменного имени, можно вписать любое имя, которое будет доступно только на локальном уровне. Также необходимо прописать выбранный домен в файле /etc/hosts (будет рассмотрено далее).

    Создаем директорию html, в которой будет храниться файл index.html для нашего первого приложения:

    Запишем фразу «Welcome to App 1» в файл index.html при помощи перенаправления ввода:

    echo "<h1>Welcome to App 1</h1>" > app1/html/index.html
    1. Для второго приложения воспроизводим те же шаги, что и для первого, заменив значения для второго приложения:
    server { listen 80; server_name app2.test.com; location / { root /usr/share/nginx/html; index index.html; } }

    Для второго приложения также зададим локальное доменное имя.

    Создаем директорию html, в которой будет храниться файл index.html для нашего второго приложения:

    Запишем фразу «Welcome to App 2» в файл index.html при помощи перенаправления ввода:

    echo "<h1>Welcome to App 2</h1>" > app2/html/index.html

    Так как мы использовали локальные доменные имена, их необходимо заранее прописать в системе. Для этого открываем на редактирование файл hosts при помощи любого текстового редактора:

    И прописываем ранее заданные локальные доменные имена:

    127.0.0.1 app1.test.com 127.0.0.1 app2.test.com

    Итоговая структура проекта выглядит следующим образом:

    Запуск Traefik и приложений

    Теперь переходим к запуску Traefik и приложений. Для этого в корневой директории проекта (test-traefik) создаем файл docker-compose.yml:

    Вставляем следующую конфигурацию:

    Для запуска контейнеров используем команду:

    Если Docker Compose был установлен при помощи пакета docker-compose-plugin, то команда для запуска контейнеров будет следующей:

    Проверяем статус запущенных контейнеров при помощи команды:

    У всех контейнеров должен быть статус Up.

    Проверим, смогут ли запущенные контейнеры с Nginx-сервисами принимать трафик. Для этого отправим запрос к доменным именам, используя утилиту curl.

    Как можно увидеть, оба сервиса вернули ответ в виде ранее заданных ранее строк.

    Также проверим веб-панель мониторинга Traefik. Для этого в браузере переходим по IP-адресу сервера и порту 8080:

    В разделе «Routers» будут отображаться ранее заданные маршруты app1.test.com и app2.test.com:


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны