엔진엑스(Nginx)에서 SSL(HTTPS)을 설정하려면 443 포트 리슨 지정, 인증서 및 개인 키 경로 매핑, 그리고 80 포트 HTTP에서 HTTPS로의 리다이렉트 구성을 작성해야 합니다. 무료 인증서인 Let’s EncryptCertbot을 활용하면 가장 쉽고 빠르게 적용할 수 있습니다. [1, 2, 3]


1. Certbot을 이용한 인증서 자동 발급 (권장)

우분투/리눅스 환경에서 Certbot을 사용하면 인증서 발급과 Nginx 설정 자동화를 한 번에 진행할 수 있습니다. [1, 2]

  1. Certbot 및 Nginx 플러그인 설치 (sudo apt install certbot python3-certbot-nginx)
  2. 자동 설정 명령어 실행:bashsudo certbot --nginx -d your-domain.com 코드를 사용할 때는 주의가 필요합니다.
  3. 이메일 입력 및 약관 동의 후 완료되면 Nginx 설정이 자동으로 갱신됩니다. [1, 2, 3, 4]

2. 수동 Nginx SSL 설정 파일 예시 (/etc/nginx/conf.d/your-domain.conf)

직접 인증서 경로를 물려 수동으로 서버 블록을 구성할 경우 아래 코드를 참고하여 작성합니다. [1, 2]

nginx

# 80 포트로 들어온 HTTP 요청을 443 포트 HTTPS로 강제 리다이렉트
server {
    listen 80;
    listen [::]:80;
    server_name your-domain.com;

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

# 443 포트 HTTPS 보안 서버 설정
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name your-domain.com;

    # SSL 인증서 파일 경로 (Let's Encrypt 기준 예시)
    ssl_certificate /etc/letsencrypt/live/://your-domain.com;
    ssl_certificate_key /etc/letsencrypt/live/://your-domain.com;

    # 보안 강화를 위한 최신 TLS 프로토콜 설정
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # 세션 캐시 최적화 (반복 접속 속도 향상)
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    location / {
        root /var/www/html;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }
}

코드를 사용할 때는 주의가 필요합니다.


3. 설정 반영 및 검증

  1. Nginx 설정 문법에 오류가 없는지 검사:bashsudo nginx -t 코드를 사용할 때는 주의가 필요합니다.
  2. 이상이 없다면 Nginx 서비스를 재시작하여 설정을 반영합니다:bashsudo systemctl restart nginx 코드를 사용할 때는 주의가 필요합니다.
  3. Let’s Encrypt 인증서는 90일마다 만료되므로 Certbot 자동 갱신 타이머가 정상 작동하는지 sudo certbot renew --dry-run 명령어로 미리 점검해 두는 것이 안전합니다. [1, 2, 3, 4, 5]

만약 이 과정에서 추가로 필요한 부분이 있다면 말씀해 주세요:

  • 도커(Docker) 환경에서 Nginx SSL을 연동하는 방법
  • 와일드카드(Wildcard, *.domain.com) 서브도메인 인증서 발급 방법

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다