Для настройки SSL Terminator с использованием Traefik и Nginx, вам потребуется правильно зарегистрировать SSL-сертификаты на Traefik и настроить проксирование на Nginx. Ваша конфигурация должна позволять Traefik расшифровывать входящий SSL-трафик и проксировать его к Nginx в незашифрованном виде.
Вот пошаговая инструкция, как это сделать:
### Шаг 1: Структура Docker-Compose
Предположим, что у вас уже есть Docker и Docker Compose, установленные на вашем сервере. Ваша структура каталогов и файлов может выглядеть следующим образом:
```
/project-directory
├── docker-compose.yml
├── traefik
│ └── traefik.yml
└── nginx
└── nginx.conf
```
### Шаг 2: Конфигурация Traefik
Создайте файл `traefik.yml` для конфигурации Traefik. Вот пример:
```yml
# traefik/traefik.yml
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker:
exposedByDefault: false
certificatesResolvers:
myresolver:
acme:
email: [email protected]
storage: /acme.json
httpChallenge:
entryPoint: web
```
### Шаг 3: Конфигурация Nginx
Создайте файл конфигурации Nginx `nginx.conf` с необходимыми настройками:
```nginx
# nginx/nginx.conf
server {
listen 80;
server_name terminator.example.com;
location / {
proxy_pass http://your_upstream_server:your_port; # Укажите ваш upstream сервер
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
### Шаг 4: Docker-Compose
Теперь создайте файл `docker-compose.yml` с необходимыми сервисами:
```yml
version: '3.8'
services:
traefik:
image: traefik:v2.9
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.email=your-email@example.com"
- "--certificatesresolvers.myresolver.acme.storage=/acme.json"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./traefik:/acme.json"
nginx:
image: nginx:latest
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=Host(`terminator.example.com`)"
- "traefik.http.routers.nginx.entrypoints=websecure"
- "traefik.http.routers.nginx.tls=true"
- "traefik.http.routers.nginx.tls.certresolver=myresolver"
networks:
- web
networks:
web:
```
### Шаг 5: Запуск
Теперь, находясь в каталоге вашего проекта, запустите следующий команды, чтобы развернуть сервисы:
```bash
docker-compose up -d
```
### Заметки:
1. Не забудьте заменить `[email protected]` на ваш реальный email, который будет использоваться для получения уведомлений о сертификатах.
2. Убедитесь, что ваш DNS настроен правильно на `terminator.example.com`, указывая на ваш сервер.
3. Убедитесь, что файл `acme.json` создан и имеет правильные разрешения (чтобы Traefik мог записывать туда данные). Вы можете создать его через команду:
```bash
touch traefik/acme.json
chmod 600 traefik/acme.json
```
Теперь, когда вы откроете `https://terminator.example.com`, Traefik будет обрабатывать SSL и передавать незашифрованный трафик на Nginx.