호스트 기반 라우팅

호스트 기반 라우팅

개념

  • 요청의 Host 헤더 값을 기준으로 트래픽을 분기하는 방식
  • 예를 들어, API에 들어오는 요청이 abc.com 을 통해 들어왔을 때와, XXX.XXX.XXX.XXX IP를 통해 들어왔을 때의 전달 경로를 다르게 설정해주는 기법이다.
  • Nginx, Apache 등에서 공통적으로 사용되는 방식이다.

아래와 같이 표현할 수도 있다.

  • 도메인 기반 리버스 프록시
  • 클라이언트 Host 헤더 기준의 라우팅
  • 서로 다른 가상 호스트로 요청을 분기

언제 쓰는데?

  • 하나의 Nginx 인스턴스로 여러 도메인/서비스를 처리해야 할 때
  • 테스트 / 운영 서버에 대한 처리 분기를 나눠야 할 때

어떻게 쓰는데?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# nginx.conf
http {
    # resolver를 하는 이유는.. docker network 를 명확하게 잘 찾게 하기 위함
	resolver 127.0.0.11 valid=30s;
	# host 값에 따라 프록시 대상 백엔드 서버를 지정
	map $host $backend_upstream {
    default   127.0.0.1:8000; # 기본 백엔드
    abc.com   127.0.0.1:8001; # Host가 abc.com 일 경우
    localhost 127.0.0.1:8002; # Host가 localhost 일 경우
	}

    server {
        listen 80;

        location / {
            proxy_pass http://$backend_upstream;  # map 설정에 따른 프로시
            ...
        }
    }
}

Comments