도메인 구매 및 EC2와 연결
트위치 OAuth 로그인 사용 시 리디렉션 URL은 https 프로토콜을 사용해야 한다.
우선 도메인을 구매하자
카페24, 가비아, freenom 등에서 구매할 수 있는데 가비아에서 한번 해보겠다.
가비아: 대한민국 도메인 점유율 1위
대한민국 100만 도메인 등록 업체
domain.gabia.com
사용하려는 도메인을 입력한다.
사용가능한 도메인 목록이 나오는데 원하는 것을 선택하고 신청한다.
네임서버는 AWS를 이용 중이니 타사 네임서버 사용을 선택한다.
네임서버 정보를 입력하기 위해 AWS의 Route 53으로 이동한다.
호스팅 영역을 생성한다.
가비아에서 구매하려는 도메인 이름을 입력한 뒤 호스팅 영역을 생성한다.
생성된 호스팅 영역의 세부정보를 보면 레코드가 있는데 그 중 NS 유형의 네가지 네임서버를 입력해준다.
구매 후 My가비아의 DNS 관리툴로 가면 구매한 도메인을 확인할 수 있다. (시간이 조금 걸릴 수 있다.)
다시 Route 53의 호스팅 영역으로 와서 레코드를 생성한다.
값에는 EC2에 할당한 탄력적 ip주소를 입력하고 레코드를 생성한다.
이제 등록한 도메인 이름으로 접속하면 접속이 된다.
HTTPS 설정
ACM 요청
Certificate Manager로 이동 후 인증서 요청을 클릭한다.
구입한 도메인 이름을 입력한 후 요청을 클릭한다.
인증서 나열 페이지에서 방금 생성한 인증서를 클릭한다.
Route 53에서 레코드 생성을 클릭한 후 생성한다.
로드밸런서 설정
EC2로 이동한 후 로드 밸런서를 클릭한다.
Create load balancer를 클릭한다.
Application Load Balancer를 클릭한다.
Load balancer name을 입력한다.
인스턴스와 동일한 지역을 포함해 2개 이상의 영역을 선택한다.
EC2의 대시보드에서 확인할 수 있다.
보안그룹은 EC2에 적용한 보안그룹과 동일한 그룹을 선택한다.
Default action아래의 Create target group를 클릭해 그룹을 생성한다.
Target group name을 입력한 후 next를 클릭한다.
로드밸런서를 적용할 인스턴스 선택 후 Include as pending below를 클릭 한 후 create target group을 클릭한다.
위 이미지에는 HTTPS에 Default action에 HTTPS로 되어 있는데, HTTPS가 아니라 위에서 생성한 HTTP 대상 그룹을 넣어야 한다.
Default SSL/TLS certificate에 아까 만든 Certificate를 선택한다. 그리고 create load balancer를 클릭한다.
생성한 로드밸런서를 클릭한 후 아래에서 Listners 부분에서
HTTPS를 선택한 후 Actions의 Add SSL certificates for SNI를 클릭한다.
발급받았던 인증서를 선택한 후 include as pending below를 클릭한다.
그리고 add pending certificates를 클릭한다.
로드밸런서의 listners 탭으로 다시 와서 http 클릭하고 Rule에서 Manage ruels를 클릭한다.
규칙 옆의 + 버튼을 클릭한다.
규칙 삽입을 클릭한다.
호스트 헤더에 도메인 명을 입력해주고 전달 대사으이 대상 그룹에는 아까 만든 http 대상 그룹을 선택한다.
규칙을 저장한 후 HTTPS로 이동한다.
http로 설정한 대상그룹을 전달대상으로 선택한 후 저장한다.
지금까지의 로드 밸런서 설정은 http:80 요청이 들어오면 http:80요청으로 nginx로 보내고 https:443 요청이 들어오면 http:80요청으로 nginx로 보내는 것이다.
Nginx 설정
sudo vim /etc/nginx/nginx.conf
로드밸런서는 80이던 443이던 80포트로 nginx로 들어오게 해준다. 하지만 443이면 그대로 https가 적용되지만 80이었다면 https가 아니라 http로 접속된다. 따라서 조건문을 통해 https로 들어오지 않으면 https로 다시 설정해서 연결하도록 하는 설정이다.
Route 53 설정
호스팅 영역으로 와서 아까 생성한 A 유형의 레코드를 선택한다.
그리고 레코드 편집화면에서 별칭을 활성화한다.
위와 같이 선택한 후 저장한다.
이제 http로 접속해도 https로 된다.
트위치 콘솔에서 OAuth 리디렉션 URL을아래와 같이 바꾸고
https://도메인명/login/oauth2/code/twitch
EC2에 직접 입력한 application-oauth.properties에서
spring.security.oauth2.client.registration.twitch.redirect-uri={baseUrl}/{action}/oauth2/code/{registrationId}
redirect-uri 부분을 트위치 콘솔에 적은 리디렉션 URL을 입력해준다.
{baseUrl}을 사용할 경우 https://도메인명으로 나오지 않고 http://도메인명으로 나오기 때문에 {baseUrl} 대신 직접 입력해줘야 한다.
nginx의 설정을 만져야 하나 여러 방면으로 고민한 끝에 properties에 redirect-uri를 변수로 설정한 것이 떠올라 직접 입력했더니 정상적으로 작동되었다.
'SpringBoot > 개인프로젝트' 카테고리의 다른 글
Ajax가 작동이 되지 않는 문제 (0) | 2023.05.01 |
---|---|
트위치 API 채널 검색 결과를 받아오는 과정에서의 문제 (0) | 2023.05.01 |
AWS 설정 (0) | 2023.05.01 |
Summernote 적용 (0) | 2023.05.01 |
트위치 OAuth 로그인 (0) | 2023.05.01 |