[С помощью полезного комментария Siyu я мог решить проблемы, кроме того, мне нужно было установить точку входа в метках - я добавил свой исправленный docker-compose.yaml, и это было все, что мне нужно было исправить]
В настоящее время я перенастроил свою рабочую станцию Synology для обработки трафика https с помощью traefik.
Я хочу обслуживать док-контейнеры с traefik и по-прежнему предоставлять веб-интерфейс рабочей станции Synology через http (используя traefik также в качестве оффлоадера SSL).Теперь у Traefik есть проблема с обработкой двух провайдеров бэкэндов, один из которых является «оригинальным» веб-сервером Synology, а другой - контейнером докеров, которые приходят и уходят.Текущая настройка работает для предоставления «test.com» (веб-интерфейс Synology DSM).Но если попытаться получить доступ к контейнеру с помощью «/ dashboard», он просто выдаст мне 404.
Как это можно настроить, чтобы оба бэкэнда (докер + веб-сервер вне докера) былиобслуживается?
Точки данных
- Интерфейс док-станции распознан и
- метки (* см. ниже) считываются из traefik (можетбыть замеченным в журналах)
- Synology nginx запускается вне докера (не в качестве контейнера!)
- Вся рабочая станция Synology работает в среде IPv4 / IPv6 (оба)
- Synology nginx был изменен и не обслуживает стандартный порт http / https (где он перенаправляет только на порт 5000/5001, как я вижу в конфигурации nginx)
Предполагаемая настройка, которую следует обслуживать
Обратите внимание, что исходная синология является доменом перехвата всех (/ *)
+-----------------------------------------------------------------------
| Synology Workstation
|
| +--------------------------------------------------------+
| | Docker |
| | +---------+ +-------------------+ |
|-->HTTPS-->|-->HTTPS-->| Traefik |-->HTTP-->| test.com/dashboard| |
| 443:443 | | | | | |
| | +---------+--+ +-------------------+ |
| | | | |
| | | | +------------------+ |
| | | +--HTTP-->| test.com/stats | |
| | | +------------------- |
| | | |
| +----------------|----------------------------------------
| | +-------------------+
| +--HTTP-->|test.com/* |
| |(nginx of synology)|
| +-------------------+
+--------------------------------------------------------------------
Файл traefik.toml выглядит следующим образом:
debug=true
logLevel="DEBUG"
[traefikLog]
filePath = "/etc/traefik/traefik.log"
[accessLog]
filePath = "/etc/traefik/access.log"
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[[entryPoints.https.tls.certificates]]
certFile = "/etc/pki/tls/certs/test.com.crt"
keyFile = "/etc/pki/tls/private/test.com.key"
[backends]
[backends.wbackend]
[backends.wbackend.servers.server]
url = "http://workstation.test.com:5000"
#weight = 10
[frontends]
[frontends.workstation]
backend = "wbackend"
passHostHeader = true
entrypoints = ["https"]
[frontends.workstation.routes.route1]
rule = "Host:workstation.test.com"
# You MUST ADD file otherwise traefik does not parse the fronted rules
[file]
[docker]
endpoint = "unix:///var/run/docker.sock"
Фрагмент Docker-compose (см. Метки, которые отображают домен).
---
version: '2'
services:
traefik:
# Check latest version: https://hub.docker.com/r/library/traefik/tags/
image: traefik:1.7.6
restart: unless-stopped
container_name: traefik
mem_limit: 300m
#network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /volume1/container/traefik/etc/pki/tls/certs/workstation.test.com.crt:/etc/pki/tls/certs/workstation.test.com.crt
- /volume1/container/traefik/etc/pki/tls/private/workstation.test.com.key:/etc/pki/tls/private/workstation.test.com.key
- /volume1/container/traefik/etc/traefik:/etc/traefik
ports:
- "80:80"
- "443:443"
labels:
- traefik.stat.frontend.rule=Host:workstation.test.com;Path:/dashboard
- traefik.stat.backend=traefik
- traefik.stat.frontend.entryPoints=https
- traefik.stat.frontend.rule=Host:workstation.test.com;PathPrefixStrip:/dashboard
- traefik.stat.port=8080