[Infra] NginX HTTPS 적용하기

다은·2025년 6월 26일

Infra

목록 보기
1/4
post-thumbnail

1. 도메인 구매 및 EC2 IP 연결

1-1. 도메인 구매

  • 가비아에서 도메인을 구매합니다.
  • 3~4개월동안 개발 서버로 사용할 것이므로, 적절한 네이밍의 저렴한 도메인을 구매했습니다.

1-2. EC2 IP 연결

  • 해당 도메인에 개발 서버 EC2의 public ip를 연결해줍니다.
  • 가비아 - 서비스 관리 - 구매한 도메인 - DNS 정보 - 도메인 연결
  • 아래 도메인을 통해 ip주소로 접속할 수 있도록 A타입의 서브 도메인을 추가해줍니다


  • 예를 들어 new-domain 이라는 주소를 구매했고 EC2의 public ip 주소가 11.222.333.444라고 가정해보겠습니다.
    DNS 레코드 값에 11.222.333.444를 설정함으로써 아래 주소를 통해 public ip로 연결할 수 있습니다.
    1. www.new-domain
    2. new-domain



2. NginX 설치

2-1. NginX 설치 구조?

서버에 대한 모든 요청은 NginX가 처리합니다.

따라서, 애플리케이션이 위치한 EC2에 NginX를 설치하면 동일한 EC2 리소스를 나누어 사용하기 때문에 부하가 발생할 수도 있다는 우려가 있습니다. 보통은 다른 EC2에 나누어 설치하는 것을 권장한다고 합니다.

그러나 저는 개발 서버이고 단기간 프로젝트이기 때문에 감안하고 그냥 같이 설치해주겠습니다 .. ^^


2-2. NginX 설치

# nginx 설치
sudo apt install nginx 

# nginx 실행
sudo service nginx start 

# nginx 실행 가능 여부 확인
sudo service nginx status



3. 인증서 발급

3-1. certbot 설치

Ubuntu 환경에서 인증서 발급을 위한 certbot을 설치해줍니다.

Certbot?
Let's Encrypt 인증서를 발급받고 사용하는 무료 오픈소스 도구

# certbot 설치
sudo apt install certbot

# certbot-nginx를 위한 플러그인 설치
sudo apt install python3-certbot-nginx

3-2. 인증서 발급받기

sudo certbot --nginx -d $DOMAIN_ADDR

위의 명령어를 수행하고 알림 받을 이메일 주소, 각종 동의 여부를 확인해주면, 인증서를 발급받을 수 있습니다.



4. 인증서 적용

4-1. Nginx config file

아래 위치로 이동해, default 파일을 열어 config 내용을 편집해줍니다.
해당 파일은 일반 권한으로는 편집이 불가하므로, sudo 명령이 필요합니다.

cd /etc/nginx/sites-available
sudo vi default

편집한 config 내용은 다음과 같습니다.
80포트와 443포트에 대한 설정을 적용해주었습니다.

server {

        # 80번 포트의 요청 받음
        listen 80;
        listen [::]:80;
        server_name dev-learnmate.store;

        # https로 리다이렉트
        return 301 https://dev-learnmate.store$request_uri;

}

server {

        # 443번 포트의 요청 받음
        listen 443 ssl;
        server_name dev-learnmate.store;

        # public key(인증서) 위치
        ssl_certificate /etc/letsencrypt/live/dev-learnmate.store/fullchain.pem;
        # private key 위치
        ssl_certificate_key /etc/letsencrypt/live/dev-learnmate.store/privkey.pem;

        # certbot 추천 ssl 설정 파일
        include /etc/letsencrypt/options-ssl-nginx.conf;
        # 보안용 파라미터 설정
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        # 애플리케이션 서버로 요청 프록시
        # 동일한 EC2에 위치하기 때문에 localhost 이용
        location / {
               proxy_pass http://localhost:8080;
            }
}

오타가 있을 수 있으니 아래 명령어를 통해 파일의 문법을 검증해줍니다.

sudo nginx -t

4-2. Nginx 재시작 및 테스트

변경된 내용을 적용하기 위해 Nginx를 재시작합니다.

sudo service nginx restart

마지막으로, 설정한 도메인 주소로 접속해보면, 다음과 같이 성공적으로 https가 적용된 것을 확인할 수 있습니다.



Reference

profile
CS 마스터를 향해 ..

0개의 댓글