[Server]도메인적용,https적용,서브도메인,리다이렉션(redirection)

resilient

·

2021. 1. 7. 23:07

728x90
반응형

 https://apply.softsquared.com/

 

SOFTSQUARED

단순한 개발 지식만을배워가는 곳이 아닙니다 소프트스퀘어드는 함께 성장합니다. 개발 트레이닝을 통해 개인의 역량이 성장합니다. 성장한 역량은 소프트스퀘어드 내부의 다양한 활동을 통해

test.softsquared.com

AWS 인스턴스:

  • 도메인 적용
  • https 적용

챌린지

  1. 서브도메인 적용
  2. redirection 적용

AWS 인스턴스에 도메인을 적용시키기 위해서는 AWS Route 53 서비스가 필요하다.

AWS Route53은 도메인과 관련된 클라우드 DNS 서비스이고 내가 사용한 EC2 서비스와 연결해서 사용할 수 있다.

도메인(Domain)은 IP를 기억하기 어려우니까 문자로 입력해서 연결된 IP를 알려주는 서비스이다. 

DNS는 네트워크 통신을 하기 위해 IP를 찾아가는 과정이다.

 

먼저  Route53에서 DNS관리 부분의 호스팅 생성 - 호스팅 영역 생성을 누른다.

도메인 이름이 자신이 만든 도메인의 이름을 넣어준다.

호스팅 영역이 만들어지고 레코드 생성에 들어가서 기본값을 유지하고 값()자신의 EC2 인스턴스 IP를 넣어준다.

그러면 IP주소를 가진 유형 A 레코드가 생성된다.

그 후에 도메인을 받아온 사이트에 접속한다. (나는 가비아에서 도메인을 구입했다.)

도메일 설정에 들어간뒤, 네임서버 설정에서 

1차~4차 에 위에 노란색 부분 4개를 입력해주고 설정을 마치면 내 도메인과 EC2 IP가 연결된다.

 

#https 적용

 

https는 http에서 보안이 더 강화된 프로토콜이라고 생각하면 된다.

https는 ssl 프로토콜 위에서 돌아가는 프로토콜이다. ssl은 클라이언트와 서버 간의 통신을 제삼자가 보증해주는 전자화된 문서다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다.

https를 사용하기 위해서는 인증서가 필요하다. (letsencrypt.org/ko/에서 인증서를 발급받는다.)

AWS EC2 인스턴스 설정에서 보안그룹에 있는 인바운드 규칙에 HTTPS를 설정해주고,

putty를 실행해서 letsencrypt설치를 해주면 된다.

자세한 설치방법은 여기를 참고했다.

설치 후에는 여기에 접속해서 https가 제대로 연결이되었고, 보안 정도가 어느 정도인지 테스트해보면서 확인하도록 한다.

이 과정에서 인증서를 설치하는데 중에 전체를 https 적용 시킬건지, 아니면 이 도메인만 적용시킬 껀지 물어보는데

steeaady.site도메인에서 받은 인증서를 전체에 적용시키면 IP로 접속하면은 404 ERROR 가 뜬다.

이 부분을 해결하느라 애를 먹었다...

 

#서브도메인 적용

 

서브 도메인은 역할은 도메인에 보조적인 역할을 한다

다중의 사이트를 만들고 연결을 하고자 할 때 독립적으로 접속할 수 있게 도와준다.

www(Wolrd Wide Web)은 Http 프로토콜을 기반으로 하며

서브 도메인(Sub Domain)의 역할을 한다기보다 메인 서비스로 연결해준다 생각하면 된다.

 

이런 하나의 www을 이용하고 기타 여러 서브도메인을 만들어 사용한다.

서브도메인(Sub Domain)은  아무 제약 없이 내 마음대로 이름을 정해서 설정할 수 있다.

AWS Route53 호스팅 영역에 그냥 www. 만 붙여서 레코드를 하나 만들어준다.

여기서 레코드를 새로 만들어줄 때, 유형은 CNAME으로 하고 값에는 아이피가 아니라 내 도메인을 입력해주면 된다.

www.steeaady.site로 접속해도 화면이 뜨는 것을 확인한다.

 

#Redirection 적용

 

Redirection 은 말 그대로 re(다시) +direct(지시하다) 다시 지시하는 것이다.

예를 들어. test.com/page1이라는 URL을 웹 서버에 요청하면 서버는 HTTP 응답 메시지를 통해 test.com/page2로 가라고 지시해주는 것이다.

예를 들어 HTTP로 들어오면 보안이 취약하므로 Redirection을 통해 HTTPS 주소를 설정해서 리턴하는 방식이 있다.

다른 예시는 사용자가 권한이 없거나 로그인이 실패했을 때, 웹서버는 로그인 페이지로 Redirect 시켜줄 필요가 있다.

 

sudo nano /etc/nginx/sites-available/default #이 위치에
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    if ($http_x_forwarded_proto = 'http'){
        return 301 https://$host$request_uri;
    }
    ...    
}

여기 블로그와 여러 군데 블로그에서 찾아서 Redirection을 적용해보았지만 되지 않아서 구글링을 몇 시간을 했다.

결국에 나온 답은 내가 ssl 인증서를 발급받을 때, 1번 설정으로 Redirection을 안 하겠다고 했던 거였다..

2번을 하되, 여러 개의 인증서를 확장해서 받을 수 있다는 답을 슬랙에서 찾을 수 있었다.


챌린지 서브도메인과 Redirection 적용 부분이 상당히 까다로웠다. 갈수록 어려워지는 거 같다.

질문내용을 정리해보면, 지금 내가 에러가 나는 부분이 ssl 인증서를 1번으로 받아서인데, 1번에서 2번으로 설정을 통해 고칠 수 있는지, 그리고 도메인에 인증서를 받았는데, 서브 도메인들을 추가해서 또 받을 수 있는지 이다. 내가 해보니까 계속 오류가 나고 nginx 실행이 안돼서 몇 번을 밀었는데 다른 방법이 있는지 궁금해졌다.

 

#Reference

 

하다가 틀렸거나 안되는 부분은 언제든지 댓글 달아주시면 빠르게 해결하겠습니다!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#Reference

opentutorials.org/course/608/3012

반응형