У меня есть докеризованное приложение django (cookiecutter), и я хочу настроить nginx внутри контейнера docker, чтобы я мог развернуть его в экземпляре EC2. Для этого мне нужны ssl сертификаты.
Процесс получения ssl сертификата с Let's Encrypt, как это рекомендуется везде, кажется сложным, когда вы используете docker, nginx и EC2. Я попробовал это и не могу передать ошибку, которую я связываю ниже.
Поэтому мне было интересно, есть ли способ настроить nginx с сертификатом AWS. Я прочитал, что AWS сертификаты бесплатны, но не могут быть загружены (https://serverfault.com/questions/822035/). Поэтому мой вопрос состоит из трех частей:
a) Могу ли я настроить nginx без https, получить бесплатный сертификат для моего экземпляра AWS EC2 и затем запустить мое приложение на этом сервере с помощью https?
б) Если ответ положительный, как я могу настроить свой nginx сервер для обслуживания только http для этого?
c) Если я куплю сертификат в ЦС, могу ли я используйте его для настройки моего nginx и будет ли оно переносимым, если я переместу свое приложение (в Digital Ocean или Azure или sth)?
Прямо сейчас моя конфигурация nginx выглядит следующим образом:
server {
set $my_host $host;
if ($host ~ "\d+\.\d+\.\d+\.\d+") {
set $my_host "localhost:8000";
}
listen 80;
server_name localhost:8000;
charset utf-8;
error_log /dev/stdout info;
access_log /dev/stdout;
location / {
proxy_pass http://django:5000;
proxy_set_header Host $my_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
составить файл
services:
django:
build:
context: .
dockerfile: ./compose/production/django/Dockerfile
image: heatbeat_website_production_django
env_file:
- ./.envs/.production/.django
- ./.envs/.production/.postgres
command: /start
nginx:
build:
context: .
dockerfile: ./compose/production/nginx/Dockerfile
ports:
- "0.0.0.0:80:80"
depends_on:
- django
redis:
image: redis:5.0
Я ни в коем случае не эксперт в большинстве этих технологий, и я сражаюсь здесь в джунглях. Очень благодарен за помощь, советы, подсказки, предложения и рекомендации. Большое спасибо заранее. Я рад предоставить больше кода, если это необходимо.
Учебное пособие, которое я пытался, но не могу решить свою ошибку: https://medium.com/@pentacent / nginx -and-let-encrypt-with- docker -в-менее-5-минут- b4b8a60d3a71
Учебное пособие для nginx с docker и давайте зашифруем, я хотел следовать, если нет более простого и быстрого решения: https://www.humankode.com/ssl/how-to-set-up-free-ssl-certificates-from-lets-encrypt-using-docker-and-nginx
Ошибка с Let's Encrypt:
Тайм-аут во время подключения (вероятно, проблема с брандмауэром) Чтобы исправить эти ошибки, убедитесь, что ваше доменное имя было введено правильно и записи DNS A / AAAA для этого домена указан правильный IP-адрес.