최근 업무 중에 서브 도메인
과 서브 디렉토리
중 어떤 방식으로 클라이언트의 요청 사항을 처리 해야 할지에 대해서 생각을 해봤던 일이 있었다.
먼저 서브 도메인과 서브 디렉토리에 대한 명확한 개념이 내 스스로 인지가 되어 있지 않았다.
그래서 해당 글에서는 서브 도메인과 서브 디렉토리에 대한 개념과 이 둘 중 요청사항에 더 적합한 방식은 무엇인지에 대해서 다루고자 한다.
내가 클라이언트에게 받았던 요청은 다음과 같다.
저희 서버의
www.도메인.com
경로 뒤에 new라는 경로로 요청이 들어올 경우에는 특정 IP로 리다이렉트 되게 해주세요.
서브 도메인
에 대한 사전적인 개념을 먼저 알아보자.
도메인 네임 시스템(DNS) 계층에서 서브도메인(subdomain) 또는 하위 도메인은 다른 (주) 도메인의 일부인 도메인이다.
예를 들어 example.com이라는 웹사이트의 일부로서 온라인 스토어를 제공하게 된다면 서브도메인 shop.example.com을 사용할 수 있다.
https://ko.wikipedia.org/wiki/%EC%84%9C%EB%B8%8C%EB%8F%84%EB%A9%94%EC%9D%B8#cite_note-RFC_1034_section_3.1-1
그렇다면 서브 도메인의 장점은 무엇일까?
서브 도메인은 독립적인 웹 사이트처럼 운영이 되기에, 각각의 SEO 랭킹을 가질 수 있으며 이러한 점은 하나의 서브 도메인에 문제가 생겼을 때 다른 서브 도메인에 영향을 주지 않는다는 것이다.
그러면서 비슷한 도메인으로 인해 전반적인 목적성을 유지하면서 다양한 섹션을 개발 할 수 있다는 장점이 있다.
이제 서브 디렉토리
의 사전적인 개념을 알아보자.
서브 디렉토리(sub directory)는 다른 디렉토리 내에 있는 디렉토리를 말한다.
웹사이트에서 서브 디렉토리는 URL에 하위 폴더로 구성되는 방식을 의미하며, 서브폴더라고도 한다.
예를 들어, "example.com/blog"에서 "blog"는 서브폴더입니다.
https://lucy-the-marketer.kr/ko/subfolder-and-subdirectory-for-multilingual-seo/#:~:text=서브폴더(Subfolder) 방식은 말그대로 URL에 하위 폴더로 구성되는 방식을 말한다.
서브 디렉토리의 장점은 도메인 호스팅을 추가로 할 필요가 없고, N개의 도메인들을 관리 해주어야 하는 서브 도메인보다 유지보수적인 측면에서 장점이 있다.
요청 사항을 다시 봐보자.
저희 서버의
www.도메인.com
경로 뒤에 new라는 경로로 요청이 들어올 경우에는특정 IP
로 리다이렉트 되게 해주세요.
얼핏 보기에는 아 서브 도메인 방식으로 처리 하면 되겠구나!
라는 생각이 바로 든다.
그러나 위 문구에서 특정 IP
라는 문구에 집중 해보자.
현재 우리 서버 IP가 아닌 외부 IP로 리다이렉트를 시켜야 하는 문제가 있다.
이는 우리 서버에 서브 디렉토리를 두어 해당 경로로 오게 하는게 아니라 해당 URL로 요청을 받으면 우리 웹 서버에서 특정 IP로 리다이렉트를 시켜주어야 한다는 것이다.
그렇다면 웹 서버에서 어떻게 리버스 프록시를 하는지에 대해서 알아보자.
리버스 프록시
는 클라이언트의 요청을 받아서 다른 서버(예: bbb.com
)로 전달하고, 그 응답을 다시 클라이언트에게 반환하는 서버 역할을 한다.
이를 Nginx
에서 설정을 통해 구현 하는 방식을 알아보자.
server {
listen 80;
server_name 우리 서버 도메인;
location /new {
proxy_pass 특정IP;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
/new
경로에 들어온 요청을 감지한다.특정IP
로 전달한다.위 설정을 통해서 웹 서버단에서 /new 경로로 오는 요청을 특정 IP로 리다이렉트 시켜줄 수 있다.