인프라

aws EC2에 nginx를 통한 https

2023. 11. 10. 01:47
글 목차


728x90

일단 시작하기 전에 도메인을 구해요

https://www.duckdns.org/domains

 

Duck DNS

Duck DNS free dynamic DNS hosted on AWS news: login with Reddit is no more - legal request support us: become a Patreon

www.duckdns.org

해당 웹사이트에서 도메인을 구해서 내 ec2의 ip주소와 연결해 줘요

 

그뒤 다음과 같은 절차를 거치도록 해요

sudo apt-get install nginx
sudo apt-get install letsencrypt
sudo systemctl stop nginx
sudo letsencrypt certonly --standalone -d www제외한 도메인 이름

ec2-12-34-567-89.compute-1.amazonaws.com 같은 도메인은 안되요

 

이후 /etc/nginx/sites-available 로 이동해서 파일을 만들어요 저는 확장자 없이 conf로 만들게요

cd /etc/nginx/sites-available
sudo su
vi conf

conf의 내용은

server {
        location /api {
                proxy_pass http://localhost:9999/api;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mmmmmmmmmm.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mmmmmmmmmm.org/privkey.pem; # managed by Certbot
    # include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    # ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = mmmmmmmmmm.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name mmmmmmmmmm.org;
    return 404; # managed by Certbot
}

로 해요

 

아래 서버블록은

server_name이 mmmmmmmmmm.org로 접속하면 자동으로 https로 이동시켜줘요 301은 영구적인 리다이렉션을 의미해요

 

위쪽 서버블록은 https로 들어왔을때 context-path에 따른 리다이렉트 주소를 정의해 줘요 그리고 증명서를 등록해줘요 만약 분기해야 할 사이트가 많은, 이를테면 프론트 주소가 있다면 

location / {
        proxy_pass http://localhost:8080;
}

같은 설정을 더 입력해 주면 되요

 

이후

sudo ln -s /etc/nginx/sites-available/conf /etc/nginx/sites-enabled/conf

를 통해 실제로 nginx에 해당 설정파일을 실제로 등록시켜 줘요

sudo nginx -t

위 명령으로 successful이 뜨면 성공이에요

 

마지막으로

sudo systemctl restart nginx

위 명령으로 nginx을 재가동 시켜줘요

 

 

이러면 이제 https://mmmmmmmmmm.org 로 접속이 가능하게 되요 축하합니다.

728x90
aws EC2에 nginx를 통한 https