Elasticbeanstalk으로 띄워놓은 django project의 domain은 현재 다음과 같다.
http://0401fitcuration-dev.ap-northeast-2.elasticbeanstalk.com/
이를 다음과 같이 깔끔한 custom domain으로 바꾸려고 한다.
도메인 구입, 도메인과 AWS ROUTE53를 Name Server 설정으로 연결하는 방법은 다음 YouTube 비디오를 참고하는 것이 좋다.
다만 우리는 새 domain을 Elasticbeanstalk domain으로 연결할 것이니, 영상 중에서 EC2 IP 설정 부분은 넘어가도 된다. EC2 inbound rules 범위도 넓힐 필요가 없다. 다음 사진 같이 inbound rules이 설정되어 있어도 된다. 저 영상에서는 도메인 구입이랑 Name Server 설정만 따라하면 된다.
Elasticbeanstalk과 Route53를 잇는 방법에 대해서는 다음 AWS Official Docs를 따라하면 된다.
AWS Route53와 Elasticbeanstalk 사이를 Alias로 잇는 방법 - Amazon Official Docs
다음과 같이 Route 53에 등록하면 된다.
24시간 정도 지나고 등록한 도메인에 들어가니 다음과 같이 떴다.
어디서부터 잘못됐는지 파헤쳐봤다. Nslookup이랑 dig로 IP Adress를 확인해보니까 elasticbeanstalk이랑 등록한 도메인이 ip가 같았다. 등록한 도메인 - Route 53 - Elastic Beanstalk 도메인 사이가 잘 연결된 것은 확실하다.
400 에러가 발생한 이유를 잘 생각해봤다. 400 에러는 접근 권한이 없다는 것을 의미한다. 그래서 EC2 inbound rule을 다 풀어보기도 했지만, 소용이 없었다. 그러다가 Django project setting에서 Allowed Host에 새 도메인을 추가해야만 웹사이트에 접근권한이 생긴다는 것을 알아냈다.
Sentry를 확인해서 에러 로그를 확인해보니, 내 예상이 맞았다.
따라서 ALLOWED_HOSTS에 새로운 도메인과 IP를 추가했다.
ALLOWED_HOSTS = [
"0401fitcuration-dev.ap-northeast-2.elasticbeanstalk.com",
...
"fitcuration.site",
"www.fitcuration.site",
"15.165.130.220",
"15.164.252.147",
]
그러면 잘 작동한다!