웹사이트

호스팅KR 도메인 비용 인상 대비: 도메인 리다이렉트 방법(도메인 포워딩 등)

도메인 리다이렉트

도메인을 여러 개 유지하다 보면 매년 갱신 비용이 만만치 않습니다. 특히 최근 호스팅KR에서 도메인 등록 및 연장 비용을 인상한다는 소식이 왔습니다. 이에 저도 테스트 목적으로 가지고 있던 도메인을 정리해야 할 필요성을 느꼈습니다.

호스팅KR 도메인 가격 인상 안내

인상률이 어마어마한데요. 닷 KR의 경우 인상률이 100%를 넘어갑니다. 하지만 무조건 도메인을 해지하고 변경하는 게 능사는 아닙니다. 기존 도메인으로 들어오던 트래픽이 있고, 무엇보다 해당 도메인을 엔드포인트로 사용하는 API 서비스가 있다면 무작정 연결을 끊을 수 없기 때문입니다.

제 경우 PythonAnywhere에서 운영하던 서비스의 도메인을 변경하면서, 구 도메인으로 들어오는 요청을 신규 도메인으로 매끄럽게 넘겨주는 작업이 필요했습니다.


이에 저와 같은 어려움을 겪으실 분들을 위해 도메인 리다이렉트 방법을 정리해봤습니다.


가장 쉬운 길: 호스팅KR ‘도메인 포워딩’ (Web Forwarding)

도메인 주소를 변경할 때 가장 먼저 떠오르는 쉬운 방법은 도메인을 구입한 호스팅 업체(호스팅KR, 가비아 등)에서 제공하는 부가 서비스 이용입니다. 이를 보통 도메인 포워딩이라고 부릅니다.


설정 방법

호스팅KR 기준으로 [나의 서비스] > [도메인] 메뉴에 들어갑니다. 더보기(점 세개)를 클릭하면 ‘포워딩’ 메뉴가 있습니다. 여기에 연결하고 싶은 새 주소를 입력하면 됩니다. 하지만 DNS 레코드를 이용중인 경우, 다른 방법으로 합니다.

도메인 포워딩
DNS 레코드를 이용중인 경우

이 경우에는 DNS 레코드 설정 메뉴로 갑니다. DNS 레코드 설정에서는 url에서 www에 해당하는 호스트 이름을 따로 지정해서, 다른 url로 연결할 수 있는데요. 값을 변경하고 싶은 새 주소로 입력합니다.

DNS 설정 메뉴

보통은 위와 같이 웹 호스팅 설정 메뉴에서 제공하는 기본 리다이렉트 기능을 사용하면 됩니다. 하지만, API 호출과 같이 특정한 패턴의 요청은 단순 리다이렉트 설정만으로는 제대로 전달되지 않는 문제가 발생했습니다.


PythonAnywhere WSGI 설정 수정

저는 Python Anywhere에서 운영하는 사이트가 있습니다. 처음에는 Flask 학습 목적으로 했지만, 점차 develop하는 부분이 있어 버리긴 아까웠습니다.


여기에는 API 서버 기능도 있는데요. 브라우저가 아닌 코드 레벨에서 호출하는 API 요청의 경우, 단순한 웹 서버 설정만으로는 POST 데이터가 유지되지 않거나, 리다이렉트 응답(301/302)을 제대로 처리하지 못하고 연결이 끊기는 경우가 발생했습니다.


이 때는 PythonAnywhere의 WSGI Configuration File을 수정하면 해결됩니다. PythonAnywhere는 웹 서버와 파이썬 애플리케이션 통신을 위해 WSGI(Web Server Gateway Interface)를 사용합니다. 이 WSGI 설정 파일은 요청이 들어왔을 때 파이썬 코드가 어떻게 반응할지를 결정하는 가장 앞단의 관문입니다.

따라서 이곳을 수정하면 플라스크(Flask)나 장고(Django) 같은 무거운 프레임워크를 띄우지 않고도, 아주 가볍고 확실하게 리다이렉트 로직을 구현할 수 있습니다.

이 방법은 서버 자원을 거의 쓰지 않으면서도, 모든 경로와 파라미터를 그대로 보존하여 새 도메인으로 넘긴다는 장점이 있습니다.


WSGI 파일 위치 찾기

PythonAnywhere 대시보드에서 Web 탭으로 이동합니다. Code 섹션을 보면 WSGI configuration file이라는 항목이 있고, 그 옆에 /var/www/사용자명_pythonanywhere_com_wsgi.py 형태의 링크가 있습니다. 이 링크를 클릭하면 에디터가 열립니다.

리다이렉트 코드 작성

기존에 작성되어 있던 장고나 플라스크 관련 설정 코드는 모두 주석 처리하거나 삭제합니다. 왜냐하면, 이 애플리케이션의 유일한 목적은 이제 ‘리다이렉트’이기 때문입니다. 아래와 같이 파이썬 기본 문법만으로 구성된 코드를 작성합니다.

import sys
import os

# add your project directory to the sys.path
project_home = '/home/ProjectDirectory'
if project_home not in sys.path:
    sys.path = [project_home] + sys.path

# 앱 임포트 전에 리다이렉트 로직 추가
def application(environ, start_response):
    old_domain = '변경 전 도메인'
    new_domain = '변경 후 도메인'

    # 요청된 호스트가 이전 도메인인지 확인
    if environ.get('HTTP_HOST') == old_domain or environ.get('HTTP_HOST') == 'www.' + old_domain:
        # 요청 경로 가져오기
        path_info = environ.get('PATH_INFO', '')
        query_string = environ.get('QUERY_STRING', '')

        # 쿼리 스트링이 있으면 추가
        redirect_url = 'https://' + new_domain + path_info
        if query_string:
            redirect_url += '?' + query_string

        # 301 리다이렉트 응답 전송
        start_response('301 Moved Permanently', [
            ('Location', redirect_url),
            ('Content-Type', 'text/plain')
        ])
        return [b'Redirecting to new domain...']

    # 이전 도메인이 아니면 원래 앱 실행
    from main import app as application
    return application(environ, start_response)

이 코드는 들어오는 모든 요청의 경로와 파라미터를 그대로 캡처하여, `NEW_DOMAIN` 뒤에 붙여서 301 응답을 보냅니다. 301 상태 코드는 “이 주소가 영구적으로 이사 갔으니, 앞으로는 새 주소로 오세요”라는 의미를 가지므로 검색엔진 최적화(SEO) 측면에서도 유리합니다.

리다이렉트 설정을 완료해도 구 도메인의 소유권을 포기하면 안 됩니다. 도메인 소유권이 만료되어 타인이 해당 도메인을 구매하게 되면, 리다이렉트 설정 자체가 불가능해지기 때문입니다.

따라서 아래와 같이 진행하는 게 안전합니다.

  • 서비스 이전 완료: 모든 콘텐츠와 로직을 새 도메인으로 옮깁니다.
  • 리다이렉트 유지: 구 도메인의 잔여 계약 기간 동안 WSGI 리다이렉트를 유지합니다.
  • 트래픽 모니터링: 구 도메인으로 들어오는 트래픽이 ‘0’에 수렴하는지 확인합니다.
  • 최종 해지: 트래픽이 거의 없을 때 도메인 연장을 중단합니다.

도메인 비용이 오른다고 해서 무작정 변경하면 안 됩니다. 이렇게 기술적인 안전장치를 마련해 두고 점진적으로 정리하는 것이 서비스 신뢰도를 지키는 길입니다. 운영하는 사이트 블로그, 서비스 도메인 변경이 필요하다면, 위 내용 참고해서 진행해보시기 바랍니다.


테리엇

Share
Published by
테리엇

Recent Posts

도쿄 헬기투어 가격과 코스, 후지산까지 90분이면 보입니다

도쿄에 또 가나요? 도쿄타워 전망대도, 시부야 스크램블 교차로도, 아사쿠사 센소지도 이미 본 분들이라면 다음 카드로…

1주 ago

김세의 프로필, 가로세로연구소 대표 구속까지 전말 정리

1. 김세의, 2026년 5월 26일 구속이라는 분기점 김세의 가로세로연구소 대표가 2026년 5월 26일 서울중앙지법에서 구속됐습니다.…

1주 ago

군체 정보 | 개봉 5일 만에 200만, 연상호가 만든 새 좀비의 정체

연상호 감독의 신작 영화 '군체'가 2026년 5월 21일 개봉 후 단 5일 만에 누적 관객…

2주 ago

에리카 윤 스미스 프로필, 서울 출생 25세 KLPGA 교포 신예

2026 KLPGA 투어 개막전인 리쥬란 챔피언십 미디어데이 사진을 본 분이라면 한 가지 의문이 드셨을 겁니다.…

2주 ago

정지원 아나운서 프로필, 남편·학력·발음 논란 한눈에

1. KBS 정지원 아나운서, 요즘 어디서 만나볼 수 있을까요 아침마다 KBS 2TV를 켜면 익숙한 얼굴이…

2주 ago

김아현(해초) 활동가 프로필, 이스라엘 2번 나포된 27세 여성의 정체

2026년 5월 22일 새벽, 인천국제공항 1터미널 입국장에 검은 티셔츠와 청바지 차림의 한 청년이 모습을 드러냈습니다.…

2주 ago