Введение в HTTPS Traefik в Docker
Имя на localhost открывает сайт по обычному HTTP,
а чужой браузер ждёт шифрование и сертификат.
Для публичного адреса прокси слушает не только
обычный порт, но и отдельную точку для TLS.
Раздел собирает эту цепочку по шагам
на образе traefik:3 с провайдером Docker.
Порт 443 выводят наружу рядом с 80
и связывают с точкой websecure
во флаге --entrypoints.websecure.address.
Без этого слушателя шифрованный запрос
некуда принять, даже если метки уже готовы.
Сертификат к порту не привязан сам по себе:
его выпуск настраивают отдельно.
Резолвер сертификатов обращается к Let's Encrypt,
указывает почту и файл хранения на диске.
Проверка домена для бесплатного сертификата
идёт через HTTP-вызов на порт 80,
поэтому этот порт должен быть доступен с интернета.
Имена *.localhost для такой проверки
не подходят, и сертификат там не появится.
Маршрут через HTTPS вешают на точку websecure
и связывают с резолвером меткой TLS.
Правило Host(`app.example.com`)
отбирает запросы к настоящему имени,
а сайт на nginx остаётся без своей пары ports.
Переадресация с HTTP на HTTPS
добавляет посредник redirectscheme
на роутере точки web для того же хоста.
Настоящий домен в DNS должен указывать
на адрес машины с Traefik,
иначе центр сертификации не подтвердит владение.
Порты 80 и 443 открывают
для входящих снаружи, не только в локальной сети.
Учебные примеры раздела используют
app.example.com вместо localhost.
Файл acme.json кладут в том Docker,
смонтированный в каталог /letsencrypt
внутри контейнера прокси.
Том переживает перезапуск контейнера,
чтобы не запрашивать сертификат заново без нужды.
Каждый урок повторяет полный compose.yaml
и не открывает незащищённый API панели.