Как сделать чтобы traefik открывал nginx по имени хоста?

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

1. Установите и настройте Docker и Traefik

Вам нужно установить Docker на ваш сервер и настроить его, чтобы он работал с Traefik. Вы можете установить Docker, следуя инструкциям на официальном сайте Docker.

После установки Docker, установите Traefik, используя следующую команду:

docker run --name traefik -p 80:80 -p 443:443 
  -v /var/run/docker.sock:/var/run/docker.sock 
  -v $PWD/traefik.toml:/traefik.toml 
  -v $PWD/acme.json:/acme.json 
  traefik:v2.2

2. Создайте конфигурацию Nginx

Создайте Dockerfile для Nginx, в котором определите настройки, такие как прослушиваемый порт и конфигурацию сервера. Пример Dockerfile может выглядеть примерно так:

FROM nginx:latest

COPY nginx.conf /etc/nginx/nginx.conf
COPY app /usr/share/nginx/html

EXPOSE 80

Создайте файл nginx.conf с определенной конфигурацией в папке Dockerfile. В этом файле вы можете указать имя хоста и соответствующую конфигурацию. Например:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
    }
}

3. Подготовьте файл docker-compose.yaml

Определите сервисы, используемые в вашем проекте, в файле docker-compose.yaml. Пример может выглядеть следующим образом:

version: '3'

services:
  traefik:
    image: traefik:v2.2
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
     
  nginx:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    labels:
      - "traefik.http.routers.nginx.rule=Host(`example.com`)"
      - "traefik.http.services.nginx.loadbalancer.server.port=80"

В этом примере мы определяем два сервиса - Traefik и Nginx. В разделе "labels" для сервиса Nginx мы указываем правило "Host(example.com)", которое говорит Traefik, что он должен перенаправлять запросы с хостом example.com на сервис Nginx.

4. Запустите контейнеры

Запустите контейнеры с помощью команды:

docker-compose up -d

Traefik будет прослушивать входящие запросы на порту 80 и перенаправлять их в соответствие с настройками в файле конфигурации и docker-compose.yaml.

Теперь, когда веб-сервер Nginx будет запущен, Traefik будет маршрутизировать запросы, отправляемые на хост example.com, на Nginx, и они будут обрабатываться соответствующим образом.

Это общая концепция того, как настроить Traefik для перенаправления запросов на Nginx по имени хоста. Вам может потребоваться провести дополнительную конфигурацию и настройку в соответствии со своими потребностями и требованиями вашего проекта.