Назад | Перейти на главную страницу

Создайте сертификат Let's encrypt для домена с dockerized nginx

Моя цель - запустить приложение django на экземпляре EC2 с использованием nginx внутри контейнера докеров.

У меня есть приложение. У меня есть домен. Имею экземпляр EC2. Я пытаюсь собрать все воедино.

Чтобы настроить мое приложение с помощью nginx, мне нужны сертификаты ssl. Я хочу использовать Let's encrypt. Чтобы использовать Let's encrypt, мне нужно подтвердить свой домен.

Но мой домен или, скорее, A-запись моего домена сейчас ни на что не указывает. Таким образом, пытаясь получить сертификаты с помощью certbot sudo certbot certonly --standalone --preferred-challenges http -d mydomain.dev дает мне:

http://mydomain.dev/.well-known/acme-challenge/ko3tofGIoo93e-VFPX9CB__CqcNp1ZPazcQR1G5LsGE: Тайм-аут во время подключения (вероятно, проблема с брандмауэром). Чтобы исправить эти ошибки, убедитесь, что ваше доменное имя было введено правильно и что записи DNS A / AAAA для этого домена содержат правильный IP-адрес.

Хорошо. Итак, мой первый вопрос, чтобы понять это: куда мне указать свою A-запись? Я попытался указать его на свой собственный IP-адрес и на свой экземпляр EC2, который является сервером Ubuntu.

Но на этом сервере на данный момент тоже ничего не запущено. Мне кажется, что это не работает. Возможно ли вообще то, что я пытаюсь сделать?

Когда это сработает, у меня возникнет еще одно сомнение по поводу nginx в контейнере докеров ... Как только я получу эти сертификаты, помещу их в свою конфигурацию и разверну на моем экземпляре EC2, как мой домен будет взаимодействовать с ним? Контейнер nginx такой же, как если бы он был установлен на сервере? Извините, если эти вопросы слишком простые, но я не специалист по сетям, пытающийся понять, что происходит под капотом.

Я очень благодарен за любые объяснения, помощь или подсказки.

Если нужно:

Вот как должна выглядеть моя конфигурация nginx в конце:

services:
  django:
    build:
      context: .
      dockerfile: ./compose/production/django/Dockerfile
    image: my_webiste_production_django
    env_file:
      - ./.envs/.production/.django
      - ./.envs/.production/.postgres
    command: /start

  nginx:
    image: nginx
    restart: always
    ulimits:
      nproc: 65535
      nofile:
        soft: 49999
        hard: 65535
    volumes:
      - /some/path/www/html:/usr/share/nginx/html
      - /some/path/log:/var/log/nginx
      - /some/path/compose/production/nginx/sites-enabled/sitefitnesshq.conf:/etc/nginx/conf.d/default.conf
      - /etc/letsencrypt/live/mydomain.com/fullchain.pem:/etc/letsencrypt/live/mydomain.com/fullchain.pem
      - /etc/letsencrypt/live/yourdomain.com/privkey.pem:/etc/letsencrypt/live/mydomain.com/privkey.pem
      - /etc/letsencrypt/live/yourdomain.com/chain.pem:/etc/letsencrypt/live/mydomain.com/chain.pem
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - django
    deploy:
      restart_policy:
        condition: on-failure
        delay: 5s
        window: 60s