이제 거의 다왔다!!
http는 웹 브라우저와 서버 간 요청-응답 처리를 해주는 프로토콜이다.
여기에 보안을 더해준 것이 https이다. 보통 TLS, SSL 프로토콜을 사용해 암호화하여 보안을 지킨다.
AWS ALB(Application Loas Balancer)를 이용해 https를 설정했다.
# 도메인 구입
- 도메인을 구입하는 사이트는 여러 곳이 있다. 가비아, AWS, Freenom(무료) 등...
- 처음에는 내도메인.한국 - 한글 무료 도메인 등록센터 (xn--220b31d95hq8o.xn--3e0b707e) 이곳이 무료여서 사용했는데, 뭐가 문제인지 적용이 잘 안된다...
- 가비아에서 싼거삼.
- 네임서버의 1~4차는 호스팅 영역 생성 후 수정해줘야 한다.
- AWS의 Route53 -> 호스팅 영역 -> 호스팅 영역 생성 클릭 후 구입한 도메인의 이름을 적어서 생성해준다.
- 다음으로는 생성한 호스팅 영역을 클릭한 후 레코드 생성에 들어간다.
- 레코드 유형 A 선택 후 EC2 퍼블릭 ip를 작성해준다. 다만 퍼블릭 ip는 서버 재부팅을 하면 계속 바뀌니까...탄력적 ip 설정 후 그 ip를 적어주는 것이 좋다.
- 레코드는 여러개를 추가할 수 있는데, 앞에 * 를 붙이면 내 도메인 ym-ceos.store앞에 어떤 글자가 와도 내 프로젝트로 이동할 수 있다.
- 레코드생성까지 완료되면 다시 호스팅 영역으로 돌아온다.
- 레코드 유형 중 기본으로 생성되는 NS유형에 4가지의 값이 있는데, 이것을 가비아의 네임서버 1~4차에 각각 넣어준다.
- 이제 https를 위한 인증서를 요청하자.
- AWS Certificate Manager(ACM) -> 인증서 요청 -> 퍼블릭 인증서 요청 후 다음을 누른다.
- 도메인 이름에 내가 만들어준 레코드 이름들(내가 사용할 도메인)을 넣는다.
- 이 인증서에 다른 이름 추가 -> 여러 도메인 추가 가능
- 나머지는 디폴트 값으로 내버려 두고 생성을 해준다.
- 기다리면 승인 완료! 최대 20분 정도 걸리는데, 제대로 작성했으면 5분도 안걸리는 듯.
- 이제 EC2로 돌아가 로드밸런서를 등록할 차례이다. 먼저 로드밸런싱 -> 대상 그룹(target group)을 선택한다.
- 타겟그룹 생성 후 pending 누르기 -> running으로 바뀔 때까지 기다린다.
- create taget group까지 완료했으면 로드 밸런서를 만든다.
- Application Load Balancer 선택 후 이름을 설정한다.
- Networking Mapping은 EC2인스턴스의 가용영역에서 확인가능하다.
- 2개 이상을 선택해야되는데, 아무거나 해도 괜찮다. 나는 귀찮아서 다 선택했음.
- 보안그룹은 EC2와 같은 걸로 선택했다.
- Listenr and Routing에서 아까 만든 target group을 선택해준다.이제 해당 포트로 돌아오는 요청을 타겟 그룹으로 넘겨줄 수 있다.
- 로드밸런서로 다시 이동해서 만들어진 리스너들을 선택 후 규칙을 수정해준다.
- 80번 포트로 들어오는 요청은 Redirect하고, 443번 포트로 들어오는 요청은 인스턴스로 연결해주기
- 80번 포트의 기존 규칙 삭제 후 위와 같이 설정해준다.
- 이제 등록한 로드밸런서를 아까 만들어준 AWS Route53의 도메인의 레코드에 등록해준다.
- 이제 거의 끝났다.
- 443 포트로 들어오는 요청을 연결해주었으니, 인바운드 규칙에 443 포트를 추가해주자.
- 인바운드 규칙 편집을 눌러서 수정할 수 있다.
- 포트범위마다 해당 유형이 다르다. ssh는 개발자 전용이라 소스를 저렇게 두면 안되는걸로 아는데...연습할게 있어서 저렇게 냅뒀음.
- 성공!
- 원래 여기에 오류나..연결도 쓸려고 했는데 너무 길어져서...다음에 써야지.
# 참고
'django > 정리' 카테고리의 다른 글
[Django] CEOS vote_project 정리 (0) | 2023.06.29 |
---|---|
AWS 배포(4) - SSH 연결 및 docker 관리 (1) | 2023.05.24 |
AWS 배포(2) - EC2, RDS, github action (0) | 2023.05.24 |
AWS 배포(1) - Django, Nginx, Gunicorn (0) | 2023.05.23 |
CEOS Readme 정리 - 4주차:DRF2 : Simple JWT & Permission (0) | 2023.05.08 |