@evgenin

Как правильно настроить nginx + ssl в докер?

version: "3.9"
networks:
  opencart-network:
services:
  webserver:
    build:
      context: .
      dockerfile: ./docker/welcomepage/Dockerfile
      args:
        - DOMAIN_NAME=${DOMAIN_NAME:-domain.com}
        - DOMAIN_EMAIL=${DOMAIN_EMAIL:-mail@domain.com}
    ports:
      - "80:80"
      - "443:443"
    networks:
      - backend-network
    volumes:
      - ./certbot/www/:/var/www/certbot/:ro
  certbot:
    image: certbot/certbot
    restart: unless-stopped
    volumes:
      - ./certbot/www/:/var/www/certbot/:rw
      - ./certbot/conf/:/etc/letsencrypt/:rw
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot certonly --webroot --webroot-path=/var/www/certbot --email ${DOMAIN_EMAIL} --agree-tos --no-eff-email -d ${DOMAIN_NAME}; sleep 12h & wait $${!}; done;'"
    networks:
      - backend-network


Nginx conf
server {
    listen 80;
    server_name ${DOMAIN_NAME};

    root /var/www/html;
    index index.html;

    charset utf-8;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }
    # Redirect from 80 to 443
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 default_server ssl;

    server_name ${DOMAIN_NAME};

    root /var/www/html;
    index index.html;

    charset utf-8;

    ssl_certificate /etc/letsencrypt/ssl/live/${DOMAIN_NAME}/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/ssl/live/${DOMAIN_NAME}/privkey.pem;
    
    location ~ /\.(?!well-known).* {
        deny all;
    }

}


Выполняю команду:
docker-compose run --rm certbot certonly --webroot --webroot-path /var/www/certbot/ -d domain.com


Основная загвоздка, это вначале нужно обратиться к 80 порту от certbot, чтобы он выдал сертификаты, и потом их установить и перезаписать настройки nginx, как это правильно сделать?
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы