Почему Traefik не распознает URL-адреса?

Почему при добавлении нового контейнера в докер, доступ по URL не работает?
Проблема заключается в том, что после развертывания нового контейнера через traefik, доступ к нему по URL не устанавливается. docker-compose.yml файл выглядит следующим образом:

```
version: '3'

networks:
  web:
    external: true
  internal:
    external: false

services:
  nginx:
    image: nginx:alpine
    volumes:
      - ./app:/var/www/app
    container_name: test_nginx
    networks:
      - internal
      - web
    labels:
      - traefik.backend=test
      - traefik.frontend.rule=Host:test.example.ru
      - traefik.docker.network=web
      - traefik.port=80
  app:
    build:
      context: ./
    volumes:
      - ./app:/var/www/app
    container_name: test_app
    networks: 
      - internal
    labels:
      - traefik.enable=false
```

Доступ к основному домену работает должным образом, однако доступ к контейнерам с поддоменами отсутствует. Пожалуйста, помогите найти причину этой проблемы и предложите возможные пути ее решения.
  • 13 ноября 2023 г. 19:39
Ответы на вопрос 2
Возможны несколько причин, по которым Traefik не распознает URL-адреса и доступ к контейнерам не работает:

1. Неправильная настройка сети: Убедитесь, что сеть "web" существует и правильно настроена. Это может быть внешняя сеть, созданная с помощью команды `docker network create`, или существующая сеть, определенная в другом месте.

2. Неправильная настройка меток Traefik: Убедитесь, что метки `traefik.backend` и `traefik.frontend.rule` правильно указаны. `traefik.backend` должен содержать имя бэкэнда, а `traefik.frontend.rule` должен содержать правило маршрутизации, включающее имя хоста (субдомена) и доменное имя. Убедитесь, что имя хоста в метке `traefik.frontend.rule` совпадает с именем хоста, указанным в URL-адресе.

3. Проблемы в DNS: Убедитесь, что хостное имя (домен) корректно разрешается в IP-адрес и IP-адрес сервера, на котором работает Traefik, правильно настроен для этого домена.

4. Ошибки в настройке Traefik: Проверьте настройки Traefik для обработки запросов HTTP и наличие необходимых сетей и маршрутов. Убедитесь, что Traefik настроен для прослушивания HTTP-запросов и правильно настроен для перенаправления запросов к соответствующим контейнерам.

5. Проверьте журналы Traefik: Просмотрите журналы Traefik для поиска ошибок или предупреждений, которые могут указывать на проблемы с маршрутизацией запросов.

Если приведенные выше рекомендации не помогают решить проблему, рекомендуется также убедиться, что версия Traefik, Docker и других используемых инструментов совместимы между собой. Также можно обратиться к документации Traefik и сообществу для получения дополнительной поддержки и советов по настройке.
Для правильной настройки редиректа к поддоменам с использованием Traefik следует выполнить следующие действия:

1. Убедитесь, что доступ к основному домену работает нормально.

2. Убедитесь, что Traefik установлен и правильно сконфигурирован.

3. Создайте записи DNS для поддоменов ссылающиеся на IP-адрес сервера.

4. В конфигурации Traefik добавьте правила маршрутизации на поддомены. Например:

```
http:
  routers:
    router1:
      rule: "Host(`subdomain1.example.com`)"
      service: service1
      ...

    router2:
      rule: "Host(`subdomain2.example.com`)"
      service: service2
      ...
```

5. Определите соответствующие сервисы для каждого поддомена в конфигурации Traefik. Например:

```
http:
  services:
    service1:
      ...
      
    service2:
      ...
```

6. Перезапустите Traefik для применения изменений.

После этих действий, Traefik будет правильно маршрутизировать запросы к соответствующим контейнерам, осуществляя доступ к поддоменам.
Похожие вопросы