웹사이트 리다이렉션이란?
오늘은 웹사이트의 리다이렉션에 대해서 알아보겠습니다.
웹사이트의 도메인의 이해
먼저 리다이렉션을 말하기 전에 웹사이트의 동작 방식부터 이해해야 되는데요. 먼저 컴퓨터는 TCP/IP를 통해 통신하고 IP주소(223.xxx.xxx.xxx)라는 형태의 주소로 소통하게 됩니다.
하지만 이런 숫자를 다 외우기 힘들기 때문에 사람들이 기억하기 쉽게 영어로 만든 주소를 사용합니다. 이를 도메인 주소라고 하고 naver.com과 같은 것을 말합니다. 도메인은 아래와 같은 구조를 가지게 됩니다. 최상위 도메인인 국가 도메인이 있고, 우리가 생각하는 네이버와 같 이름은 3단계 도메인입니다.

naver의 경우 223.130.200.236이라는 서버를 비롯해서 4개의 서버로 접속되도록 되어 있습니다.
https://mylocation.co.kr/DnsLookup.aspx

URL은 아래처럼 이 도메인에 프로토콜과 패스 파라미터가 포함된 것을 말합니다. 그리고 이 도메인을 관리하는 서버를 DNS서버(도메인 네임서버)라고 부릅니다.

간단하게 설명한 DNS 서버의 동작 방식은 아래와 같습니다.

리다이렉션이란?
그러면 이제 리다이렉션에 대해서 좀 더 알아보겠습니다.
리다이렉트(Redirect)는 사용자가 처음 요청한 URL이 아닌, 다른 URL로 보내는 것을 뜻해요. 예를 들어, 웹사이트 A의 주소로 접속한 사용자를 웹사이트 B로 이동시키는 것을 말합니다.
웹사이트의 리다이렉션은 지도와 비슷하다고 할 수 있는데요. 지도 역시 웹사이트의 IP주소처럼 위경도 좌표가 있습니다. 예를 들어 서울역은 북위(37° 33′ 16.8″ N), 동경(126° 58′ 14.2″ E)에 위치해 있는데요. 우리는 이런 숫자보다는 서울역으로 사람들과 소통합니다. 이게 도메인 서버의 역활이라고 생각하시면 되구요.

리다이렉트는 서울역과 지번 주소인 용산구 한강대로 405를 매치시키는데 있습니다. 즉 택시 아저씨에게 서울역을 가자고 해도 되고 한강대로 405를 가지고 해도 우리는 같은 위치로 가게 됩니다. 즉 www.naver.com이라는 도메인과 www.naver.co.kr이라는 도메인으로 접속하더라도 같은 사이트로 접속하게 해주는 것을 말합니다.
그리고 여기에서 웹서버와 WAS개념이 나오는데요. 기본적으로 웹서버는 정적인 페이지를 처리하는 웹서버가 있습니다. 흔히 아는 아파치, Nginx와 같은 것이죠. 그리고 DB와 직접적으로 소통하는 웹 어플리케이션 서버인 WAS가 있는데요.
아까 서울역을 예로 들면, 서울역이 웹서버고 서울역 안에 푸드코드, 편의점, 서점 등의 시설이 WAS라고 할 수 있습니다. 일반적으로 웹서버와 WAS는 유사한 기능을 가지고 있어서 하나로만 해도 되는데요. 서버의 스케일을 키우거나 할 때 별도로 접속자가 많으면 웹서버를 증설하고, 각각의 어플리케이션의 처리 용량을 증설시키기 위해서는 WAS만 증설해서 사용하기 위해서 분리해서 운영하는게 일반적입니다.

그러면 실제 업무에서는 어떻게 동작할까요?
먼저 도메인을 도메인업체에게 구입합니다. 저의 경우 현재 simplify.kr은 호스팅KR에서 구입했고, 이제 네임서버는 클라우드 플레어를 통해 관리하고 있습니다.

그리고 클라우드 플레어에 들어가면 이제 DNS 설정을 볼 수 있는데요. 아래처럼 A레코드로 서버 아이피 150점대로 연결되어 있습니다. 이 때 리다이렉션을 하려면 다른 도메인도 같은 서버를 바라볼 수 있도록 A레코드의 수정이 필요합니다.

이제 네임서버에서 서버를 바라보게 만들었다면, 서버에 올라가 있는 웹서버(nginx, 아파치 등)에서도 리다이렉션을 설정해줘야 합니다.
일반적인 nginx의 경우 아래처럼 server name 아래에 301로 리턴 시키면 되는데요.
# 1. myhost.co.kr -> myhost.com 리다이렉트 설정
server {
listen 80;
server_name myhost.co.kr www.myhost.co.kr;
return 301 https://myhost.com$request_uri;
}
# 2. 메인 서버 설정 (myhost.com)
server {
listen 80;
server_name myhost.com www.myhost.com;
location / {
# 실제 웹 서비스 경로 또는 프록시 설정
root /var/www/html;
index index.html;
}
}
리다이렉션은 3xx로 시작하고 각각의 코드는 아래와 같습니다.
| 코드 | 메시지 | 리다이렉트 종류 | 설명 |
| 301 | Moved Permanently | 영구적인 리다이렉션 | 요청이 GET 메서드로 변할 수 있고 메시지 본문이 제거돼요. |
| 308 | Permanent Redirect | 영구적인 리다이렉션 | 최초 요청과 메서드 및 메시지 본문은 변하지 않아요. |
| 302 | Found | 일시적인 리다이렉션 | 301과 원리는 같지만 검색 엔진이 링크를 갱신하지 않아요. |
| 303 | See Other | 일시적인 리다이렉션 | 요청이 GET 메서드로 바뀌고 본문이 제거돼요. |
| 307 | Temporary Redirect | 일시적인 리다이렉션 | 요청 메서드와 본문이 유지되지만 검색 엔진이 링크를 갱신하지 않아요. |
| 300 | Multiple Choice | 특수 리다이렉션 | 요청에 2개 이상의 응답이 가능할 때 사용돼요. |
| 304 | Not Modified | 특수 리다이렉션 | 업데이트되지 않은 리소스라서 캐시를 사용할 수 있다는 것을 뜻헤요. |
웹서버 접근이 어려울 경우 클라우드 플레어의 규칙을 통해서 세팅도 가능한데요. 아래 사이트를 참고하시어 세팅하시면 됩니다.
그럼 즐거운 하루 보내세요.