1. 서브 도메인과 서브 디렉토리
서브 도메인(Sub domain)
- 서브 도메인은 메인 도메인 아래에 추가적인 도메인을 만드는 방식입니다.
- 예를 들어, blog.angrycloud.store에서 "blog"는 메인 도메인인 "ngrycloud.store" 아래에 있는 서브 도메인입니다.
- 서브도메인은 주로 다른 웹 사이트, 서비스 또는 콘텐츠의 분리된 버전을 호스팅하는 데 사용됩니다.
서브 디렉토리(Sub directory)
- 서브 디렉토리는 동일한 도메인 아래에 추가 경로로 웹 콘텐츠를 구성하는 방식입니다.
- 예를 들어, angrycloud.store/blog에서 "blog"는 "angrycloud.store" 도메인 아래의 서브디렉토리 입니다.
- 서브 디렉토리는 동일한 도메인 내에서 관련 콘텐츠를 구분하고 조직하는 데 사용됩니다.
- 블로그 게시물, 제품 페이지, 연락처 정보 등을 각각 다른 서브디렉토리에 배치할 수 있습니다.
- 어떤 구조를 선택할지는 웹 사이트의 목적, 콘텐츠 유형, 조직 방식 및 SEO 전략에 따라 달라질 수 있습니다.
- 서브 도메인은 독립된 브랜드나 서비스에 적합하며, 서브 디렉토리는 동일한 도메인 내에서 구조를 단순화하거나 관련 콘텐츠를 그룹화하는 데 유용합니다.
2. 서브 도메인
1. 서브 도메인에 쓸 서버를 Public Subnet에 새로 생성합니다. (만들어뒀던 웹서버 이미지 사용)
2. 서버 생성은 시간이 걸리니 그동안 다른 설정들을 해보겠습니다.
서브 도메인 등록을 위해 Service -> Global DNS를 클릭합니다.
3. 레코드 추가를 클릭합니다.
4. 서브 도메인 주소로 blog를 사용해보겠습니다.
LB VPC -> 생성했던 ALB 선택 후 추가를 클릭합니다.
5. 설정 적용을 클릭하고 서버가 생성완료 될때까지 기다립니다.
6. 서버가 생성완료 되었다면 Load Balancer의 Target Group탭으로 들어가 Target Group 생성을 클릭합니다.
7. 식별하기 쉽게 이름에 blog를 넣어줍니다.
8. 나머지 설정은 첫 ALB 설정때와 동일합니다.
9. blog 도메인을 위한 타겟이니 web03 서버만 추가해주고 다음을 클릭합니다.
10. Target Group 생성을 클릭합니다.
11. 타겟 그룹이 생성된걸 확인하고 Load Balancer 탭으로 갑니다.
12. 생성했던 ALB를 선택 후 리스너 설정 변경을 클릭합니다.
13. 현재 HTTP(80)에 대한 요청만 처리하고 있기에 리스너에 80번 포트에 대한 설정이 있습니다.
해당 리스너를 선택 후 규칙 조회/변경을 클릭합니다.
14. 80번에 대한 요청은 전부 test-web-tg로 보내고 있습니다. 규칙 추가를 클릭합니다.
15. 우선순위(1~9999에서 선택)를 정하고 조건은 Host Header를 선택 후 왼쪽에 추가를 클릭합니다.
조건은 Host Header, HTTP Header와 Path Pattern를 지원중이며 도메인 구분을 위해 이번에는 Host Header, 서브 디렉토리에서는 Path Pattern을 사용하겠습니다.
16. 서브 도메인으로 blog를 쓰기로 했었으니 blog.angrycloud.store를 추가
액션(TargetGroup, Redirection) 중 TargetGroup을 선택 후 앞서 만들었던 blog를 선택, 추가합니다.
Redirection은 다음글의 HTTPS때 할 예정이고 가중치는 만약 타겟을 여러개 잡을때 어느 비중으로 분산할 것인지를 정합니다.
17. 규칙이 추가되었습니다.
이제 blog.angrycloud.store에 대한 요청은 전부 web-blog-tg의 서버들에게 전달됩니다.
18. 새로 추가한 도메인으로 접속합니다.
웹서버 이미지를 만들었을 때의 nginx 초기화면이 뜬다면 정상 입니다.
3. 서브 디렉토리
1. 서브 디렉토리에 쓸 서버를 Public Subnet에 새로 생성(만들어뒀던 웹서버 이미지 사용)하거나 서브 도메인때 생성해뒀던 서버를 사용합니다.
2. 서브 디렉토리 방식은 하나의 도메인을 쪼개서 쓰는 것이기에 DNS에서 해줄 설정은 없습니다.
서버가 생성되었다면 Load Balancer의 Target Group탭으로 들어가 Target Group 생성을 클릭합니다.
3. 서브 디렉토리는 path 기반이니 이름에 path를 넣어 식별하겠습니다.
4. 나머지 설정은 첫 ALB 설정때와 동일하나 /path를 사용할 예정이므로 URL path를 /Path로 설정합니다.
5. web04 서버만 추가해주고 다음을 클릭합니다.
6. 정보 확인 후 Target Group 생성을 클릭합니다.
7. 타겟 그룹이 생성된걸 확인하고 Load Balancer 탭으로 갑니다.
8. 생성했던 ALB를 선택 후 리스너 설정 변경을 클릭합니다.
9. 현재 HTTP(80)에 대한 요청만 처리하고 있기에 리스너에 80번 포트에 대한 설정이 있습니다.
해당 리스너를 선택 후 규칙 조회/변경을 클릭합니다.
10. 먼저 생성했던 blog를 위한 규칙과 기본 규칙이 보입니다. 규칙 추가를 클릭합니다.
11. 우선순위(1~9999에서 선택)를 정하고 조건은 Path Pattern를 선택 후 왼쪽에 추가를 클릭합니다.
12. 도메인 뒤의 주소 path를 포함한 모든 요청을 path-tg로 보내게 설정합니다. ( /path* )
13. 규칙이 추가되었습니다. 서브 디렉토리 기반은 Web서버에서도 설정을 해줘야 하기에 서버에서 추가 설정을 하겠습니다.
14. Web04 서버에 접속 후 위에서 설정했던대로 기본 디렉토리에 /path 디렉토리를 만들고 html을 추가합니다.
mkdir /usr/share/nginx/html/path
echo "path nginx" > /usr/share/nginx/html/path/index.html
systemctl restart nginx
15. 기본 도메인 뒤에 /path를 붙여 web04에서 만들었던 페이지가 뜨는지 확인합니다.
서브 도메인과 서브 디렉토리를 ALB를 통해 부하분산 해봤습니다.
다음 글에서는 웹서비스에 필수인 SSL 인증서를 관리해주는 Certificate Manager에 SSL 인증서를 추가하고 ALB에서 SSL 인증서를 사용한 HTTPS 통신 및 HTTP로 접속시 자동으로 HTTPS로 리다이렉트하는 설정을 해보도록 하겠습니다.
Certificate Manager : https://angrycloud.tistory.com/32