Задать вопрос
@mxelgin

Как настроить SSL Termination в связке Traefik-Nginx?

Имеется некий сайт terminator.example.com
Необходимо расшифровывать SSL-входящий трафик и передать его дальше по сети в незашифрованном виде.
Дешифрацией из коробки занимается балансировщик Traefik.
Nginx находится за Traefik и должен получать только незашифрованные данные.

docker-compose.yml
services:
  traefik:
    image: traefik:v3.1
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.email=terminator@example.com" # Ваш email для уведомлений
      - "--certificatesresolvers.myresolver.acme.storage=/acme.json" # Хранение сертификатов 
      - "--certificatesresolvers.myresolver.acme.httpChallenge.entryPoint=web"  # Добавляем httpChallenge
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./traefik.yml:/etc/traefik/traefik.yml"      
      - "./letsencrypt/acme.json:/acme.json" # Монтируем файл для хранения сертификатов

  nginx:
    image: nginx:latest
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.terminator-router.rule=Host(`terminator.example.com`)"  # Wildcard
      - "traefik.http.routers.terminator-router.entrypoints=web"
      - "traefik.http.routers.terminator-router.service=terminator-service"
      - "traefik.http.services.terminator-service.loadbalancer.server.port=80"  # Убедитесь, что NGINX слушает на 80 порту
    volumes:
      - ./html:/html  # Подключаем локальную директорию html к контейнеру
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf  # Подключаем конфигурационный файл


traefik.yml
api:
  dashboard: true
entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"
providers:
  docker:
    exposedByDefault: false
certificatesResolvers:
  myresolver:
    acme:
      email: terminator@example.com
      storage: acme.json
      httpChallenge:
        entryPoint: web
log:
  level: DEBUG


nginx.conf
server {
        listen 80;
        server_name terminator.example.com ;
        location / {
            return 200 "Hello, World!";  # Просто для проверки работы
        }


Запускаю контейнер. Смотрю в файл acme.json. Сертификаты подтянулись.

Делаю проверку на входящий график. . Здесь все отлично, нешифрованный трафик ходит.
curl -I http://terminator.example.com
HTTP/1.1 200 OK


Шифрую входящий график. Traefik трафик кушает, но не дешифрует. Что я упустил?
curl -I https://terminator.example.com
HTTP/1.1 404 Not Found
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@mxelgin Автор вопроса
Вопрос решен.

- "traefik.http.routers.terminator-router.entrypoints=websecure"  # Изменил на websecure
- "traefik.http.routers.terminator-router.tls=true"  # Включил TLS
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы