Я настроил Traefik с Docker и сервисом, стоящим за ним. Базовая настройка работает. Я могу перейти к порту 80, используя доменное имя, которое я перенаправил на https, а затем увидеть «недействительный сертификат» - так как часть «давайте шифровать» нарушена.
[маршрутизатор] <-: 80 /: 443-> [linux / docker [Traefik: 80 /: 443] [Служба: 8080]]
Вот запись в журнале (отредактированный домен.)
Журналы
acme: Ошибка -> У одного или нескольких доменов возникла проблема: \ n [xyz.example.net] acme: ошибка: 400 :: urn: ietf: параметры: acme: ошибка: соединение :: Извлечение
http://xyz.example.net/.well-known/acme-challenge/eIAFZqaGMHMWaBjINjzk4m8PuWiYfuCHCTnSU9M:
Ошибка при получении данных проверки, URL: \ n "
Сообщение об ошибке является точным, я не могу перейти к этому URL. Я заметил, что могу перейти по этому URL-адресу, используя внутренний IP http://10.0.0.21/.well-known/acme-challenge/key
, и Traefik отвечает этим в журнале:
traefik | время = "2019-05-28T21: 20: 52Z" уровень = ошибка msg = "Ошибка при получении запроса на повторную попытку токена в 542,914495 мс"
Я подозреваю, что проблема в настройке перенаправления имени домена. Мой сервис находится на xyz.example.net (как и Traefik.) Я подозреваю, что проблема в том, что Traefik перенаправляет весь трафик, поступающий на xyz.example.net:80/:443
, в сервис, а не обрабатывает сам ./well-known/acme-challenge
. Нужно ли давать имя самому шлюзу? (Например, zzz.example.net
- это Traefik, а xyz.example.net
- услуга?)
Как я могу это исправить?
Мой файл TOML:
debug = false
logLevel = "ERROR" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC
InsecureSkipVerify = true
defaultEntryPoints = ["https", "http"]
[entryPoints]
[entryPoints.http]
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[retry]
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "example.net"
watch = true
exposedbydefault = false
[acme]
email = "me@example.net"
storage = "acme.json"
entryPoint = "https"
onDemand = false
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"