Как настроить переадресацию на внешний сервис, если у меня не существует entryPoint «https» в Traefik?

Какова структура файлов, с которой вы работаете?
Изображение к вопросу
  • 2 февраля 2024 г. 6:39
Ответы на вопрос 2
Traefik - это modern reverse proxy и load balancer, который часто используется в контейнеризированных средах, таких как Docker. Если у вас не настроен `entryPoint` для HTTPS, сначала вам нужно будет его настроить, если вы хотите использовать протокол HTTPS для переадресации трафика.

Вот шаги для настройки в Traefik с использованием Docker и Traefik в виде Docker контейнера:

### Шаг 1: Подготовьте конфигурационный файл Traefik

Создайте файл `traefik.toml` или `traefik.yml` (в зависимости от того, какой формат конфигурации вы предпочитаете), чтобы настроить entry points и, возможно, SSL/TLS:

#### `traefik.toml` пример:

```toml
[entryPoints]
  [entryPoints.web]
  address = ":80"

  [entryPoints.web.http.redirections.entryPoint]
    to = "websecure"
    scheme = "https"

  [entryPoints.websecure]
  address = ":443"
  [entryPoints.websecure.http.tls]
  certResolver = "myresolver"

[certificatesResolvers.myresolver.acme]
  email = "[email protected]"
  storage = "acme.json"
  [certificatesResolvers.myresolver.acme.tlsChallenge]
```

#### `traefik.yml` пример:

```yaml
entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https

  websecure:
    address: ":443"
    http:
      tls:
        certResolver: myresolver

certificatesResolvers:
  myresolver:
    acme:
      email: [email protected]
      storage: acme.json
      tlsChallenge: {}
```

### Шаг 2: Запустите Traefik с подготовленным конфигом

Используйте Docker Compose или команду Docker CLI, чтобы запустить Traefik с данным конфигом:

#### `docker-compose.yml` пример:

```yaml
version: "3"

services:
  traefik:
    image: traefik:v2.3
    command: --configFile=/traefik.toml
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
      - /var/run/docker.sock:/var/run/docker.sock
```

Убедитесь, что `acme.json` имеет права доступа `600`:

```sh
touch acme.json
chmod 600 acme.json
```

### Шаг 3: Запустите сервисы с метками для Traefik

В `docker-compose.yml` для сервисов, которые вы хотите обслуживать через Traefik, установите соответствующие метки:

```yaml
services:
  myservice:
    image: myserviceimage
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.myservicename.rule=Host(`myservice.example.com`)"
      - "traefik.http.routers.myservicename.entrypoints=websecure"
      - "traefik.http.routers.myservicename.tls.certresolver=myresolver"
```

### Шаг 4: Переадресация на внешний сервис

Если вы хотите один из доменов перенаправить на другой внешний сервис (не локальный сервис), вы можете использовать функцию миддлвара в Traefik для редиректа:

```yaml
services:
  traefik:
    # ... как в предыдущем блоке
    labels:
      - "traefik.http.middlewares.test-redirectregex.redirectregex.regex=^https://myservice.example.com/(.*)"
      - "traefik.http.middlewares.test-redirectregex.redirectregex.replacement=https://external-service.example.com/$${1}"
      - "traefik.http.middlewares.test-redirectregex
ошибка заключалась в dynamic_conf.yml, при такой конфигурации все работает: 
http:
  routers:
     wireguard:
     rule: "Host(`wireguard.web.ru`)"
     service: wireguard-service
     entryPoints:
         - websecure
      tls:
         certResolver: myresolver

  services: 
     wireguard-service:
       loadBalancer:
          servers:
             - url: "http://194.67.000.000:51821"
Похожие вопросы