Nginx 환경에서 Https SSL 인증서 설정하기

728x90

 

https 로 접속하기 위해서는 도메인과 ssl 인증서가 필요하다. 물론 로컬 https 디버깅 테스트를 위한 설정도 있지만 여기에서는 넘어가도록 한다.

ssl 인증서는 let's encrypt 에서 무료로 발급받을 수 있다.

https://letsencrypt.org/

 

Let's Encrypt

 

letsencrypt.org

3개월 마다 갱신하는것 잊지 말자 (crontab에 등록해두자)

ssl 인증서는 받았다 치고, nginx 환경에서 3000번 웹서버로 리다이렉트 해야한다고 가정할때 다음과 같이 설정하면 된다.

# 443 포트로 접근시 ssl을 적용한 뒤 3000포트로 리다이렉트 (express 나 django)
    server {
            server_name 서버주소;

            location / {
                    proxy_pass http://127.0.0.1:3000;
            }
            listen 443 ssl;
            
            ssl_certificate /etc/letsencrypt/live/경로/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/경로/privkey.pem;

	...
    }

# 80 포트로 접근시 443 포트로 리다이렉트
    server {
            listen 80;
            server_name 서버주소;
            return 301 https://$host$request_uri;
    }

 

코드를 설명하자면 주요 포인트는 다음과 같다.

  1. server 80
    • 80포트(http)로 접근되는 요청을 443포트(https)로 리다이렉트 한다.
  2. server 443
    • 443포트는 https 요청을 받아서 3000번 웹서버로 리다이렉트 해주는 기능을 한다.
    • SSL 인증서 부분은 미리 발급받은 인증서의 경로를 명시해야 하는데 대부분 etc 저쪽 찾아보면 된다. (경로라고 써져있는 저 부분만 바꾸면 됨)