Привет!
Отлично, что осваиваешь Docker и nginx. Давай попробуем разобраться, как настроить связку этих сервисов с помощью Docker Compose.
Шаг 1: Создание docker-compose.yml
Для начала создадим файл docker-compose.yml
, в котором будут описаны оба сервиса: nginx и whoami.
version: '3.8'
services:
whoami:
image: "containous/whoami"
ports:
- "8000:80"
nginx:
image: "nginx:latest"
ports:
- "443:443"
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- whoami
Теперь у нас есть два сервиса: whoami
и nginx
.
Шаг 2: Настройка nginx
Создадим файл nginx.conf
в той же директории, где находится docker-compose.yml
. В этом файле будет описание конфигурации nginx для проксирования запросов на сервис whoami
.
events {}
http {
upstream whoami {
server whoami:80;
}
server {
listen 80;
location / {
proxy_pass http://whoami;
}
}
}
Данный конфигурационный файл указывает nginx проксировать все запросы, которые приходят на порт 80, на сервис whoami
.
Шаг 3: SSL
Для добавления SSL необходимо немного модифицировать конфигурацию nginx и добавить сертификаты. Если у тебя нет сертификатов, можешь использовать самоподписанные или как вариант - воспользоваться Let’s Encrypt.
Я приведу пример для использования самоподписанного сертификата. Сначала нужно создать директории certs
и private
и сгенерировать в них сертификаты:
mkdir -p certs private
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
-keyout private/nginx.key -out certs/nginx.crt
После генерации сертификатов модифицируем nginx.conf
:
events {}
http {
upstream whoami {
server whoami:80;
}
server {
listen 80;
listen [::]:80;
server_name _;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name _;
ssl_certificate /etc/nginx/certs/nginx.crt;
ssl_certificate_key /etc/nginx/private/nginx.key;
location / {
proxy_pass http://whoami;
}
}
}
И не забудь добавить volume для сертификатов в docker-compose.yml
:
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./certs:/etc/nginx/certs
- ./private:/etc/nginx/private
Запуск
Теперь, когда у нас готовы файлы конфигураций и сертификаты, можем запустить docker-compose:
docker-compose up -d
Сервисы должны подняться и работать так, что nginx будет проксировать запросы на whoami
, а также поддерживать SSL.
Надеюсь, это поможет! Удачи в освоении Docker и nginx! Если возникнут вопросы, не стесняйся спрашивать. . Я ответил на ваш вопрос?