[https] Docker certbot + letsEncrypt + Nginx https 적용하는 과정에서 Nginx 종료되는 이슈

jhkim·2023년 4월 12일
0

예전에 겪었던 이슈인데 뒤늦게 메모하는거라 에러 로그는 없다...

해결 방법

Nginx 컨테이너가 돌아가고 있어야 인증서를 발급받을 수 있는데(아니면 cannot configure web server인가 에러 뜸)
Nginx 컨테이너가 자꾸만 종료되는 문제 발생
-> nginx.conf에 443포트 설정이 있었는데, 인증서 발급 전이라 nginx 컨테이너가 띄워질 때 인증서를 인식할 수 없어서 Nginx 컨테이너가 종료됐던 것!


        server {
            listen 443 ssl;
            server_name rising-aha.net;
            charset utf-8;

            ssl_certificate /etc/letsencrypt/live/도메인/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;


            # /api 경로로 오는 요청을 백엔드 upstream 의 /api 경로로 포워딩
            location /api {

            }

            location /stomp {

            }

            location / {


            }
        }

이렇게 443포트 설정이 되어 있었는데, 처음에는 인증서를 불러오지 못해 오류나는 것을 알고 ssl_certificate 부분만 주석처리 했다

-> 똑같이 안됨

그래서 443포트 관련 설정을 모두 지웠더니 Nginx가 종료되지 않고 정상적으로 컨테이너 실행됐다

이제 letsencrypt.sh 실행해서 인증서 발급 받으면 잘 됨!

발급받은 후에 443포트 설정을 추가하고, ssl_certificate에 인증서 경로 설정을 해주면 된다
인증서가 도메인 이름을 기반으로 발급되긴 하는데, 여러번 하다 보면 도메인-001 이런 이름으로 발급되기도 하니까

발급받을 때 로그 잘 확인하고 이름을 맞춰줘야 한다

그리고 인증서가 날아가면 안되므로 + nginx와 cerbot이 인증서를 공유해야 하므로 볼륨 설정도 해야 한다

# docker-compose.yml


  nginx:
    container_name: nginx_con
    restart: on-failure
    build:
      dockerfile: Dockerfile
      context: ./frontend
    ports:
      - "80:80"
      - "443:443" #443포트 꼭 열고
      - "8081:8081"
    expose:
      - "61613"
    volumes:
      - ./frontend:/client
      - ./data/nginx:/etc/nginx/conf.d
      - ./data/certbot/conf:/etc/letsencrypt #공유 볼륨
      - ./data/certbot/www:/var/www/certbot #공유 볼륨
    depends_on:
      - backend

  certbot:
    container_name: certbot-con
    image: certbot/certbot:latest
      # command: certonly --webroot --webroot-path=/var/www/certbot --email 이메일 --agree-tos --no-eff-email -d 도메인
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt #공유 볼륨
      - ./data/certbot/www:/var/www/certbot #공유 볼륨

인증서 발급은 일주일에 5회인가,,,뭐 아무튼 제한이 있으니 조심하자!!
막 시도해보다가 발급 횟수 제한 걸리면 답 없다!

0개의 댓글

관련 채용 정보