반응형

필요한 디렉토리 생성

mkdir -p demo/logs demo/certbot demo/static

demo/nginx.conf 추가

server {
    listen       80;
    server_name  mydemo.kr www.mydemo.kr;

    access_log  /demo/logs/nginx.log  main;

    location /.well-known/acme-challenge/ {
        allow all;
        root /demo/certbot/static;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

nginx 실행

version: "3.3"
services:
  nginx:
    container_name: nginx
    image: nginx:1.17.9
    environment:
      TZ: "Asia/Seoul"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./demo/nginx.conf:/etc/nginx/conf.d/demo.conf
      - ./demo:/demo
docker-compose up -d

인증서 발급

docker run -v ./demo/certbot/letsencrypt:/etc/letsencrypt -v ./demo/certbot/static:/demo/certbot/static certbot/certbot certonly --webroot --webroot-path=/demo/certbot/static --non-interactive --agree-tos -m mydemo@naver.com -d mydemo.kr

demo/nginx.conf 수정

  • 443 설정 추가
  • 아래 내용으로 수정 -> nginx 재시작 -> https로 요청을 받을 수 있음
server {
    listen       80;
    server_name  mydemo.kr www.mydemo.kr;

    access_log  /demo/logs/demo.log  main;

    location /.well-known/acme-challenge/ {
        allow all;
        root /demo/certbot/static;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen       443 ssl;
    server_name  mydemo.kr www.mydemo.kr;

    access_log  /demo/logs/demo.log  main;
    client_max_body_size 50m;

    ssl_certificate     /demo/certbot/letsencrypt/live/mydemo.kr/fullchain.pem;
    ssl_certificate_key /demo/certbot/letsencrypt/live/mydemo.kr/privkey.pem;

    location / {
        root /demo/static;
        index index.html;
        try_files $uri $uri/ =404;
    }
}

인증서 갱신 - 테스트

  • 아래 명령어를 통해 갱신이 가능한지 테스트 진행 가능
  • 갱신 처리가 오래걸릴 수 있으므로 기다린다.(대략 5분)
docker run -v ./demo/certbot/letsencrypt:/etc/letsencrypt -v ./demo/certbot/static:/demo/certbot/static certbot/certbot renew --dry-run

인증서 갱신

  • 아래 명령어를 만료 30일 미만으로 남았을 때 실행하면 인증서를 갱신할 수 있다.
  • 갱신 후 nginx 재시작 필요
docker run -v ./demo/certbot/letsencrypt:/etc/letsencrypt -v ./demo/certbot/static:/demo/certbot/static certbot/certbot renew
반응형

'Development > Nginx' 카테고리의 다른 글

[Nginx] Echo Module 사용하기  (0) 2019.09.07
[Nginx] 설정  (0) 2019.07.06
[Nginx] 설치  (0) 2019.07.04

+ Recent posts