sitelink1  
sitelink2  
extra_vars5  
extra_vars6  

Nginx는 서브 도메인에 따라 요청을 다른 서버로 라우팅할 수 있는 기능을 제공합니다. 이를 위해서는 다음과 같은 설정을 해야 합니다.

  • Nginx의 server 블록에 location 지시어를 사용하여 서브 도메인을 지정합니다.
  • location 지시어의 proxy_pass 지시어를 사용하여 요청을 전달할 서버의 주소와 포트를 지정합니다.

예를 들어, 다음과 같이 설정하면 www.example.com 서브 도메인의 요청은 포트 8080에서 실행 중인 웹 서버로 전달됩니다.

server {
  listen 80;

  server_name www.example.com;

  location / {
    proxy_pass http://127.0.0.1:8080;
  }
}

이렇게 설정하면 www.example.com으로 접속하면 포트 8080에서 실행 중인 웹 서버에 요청이 전달됩니다.

다음과 같이 설정하면 api.example.com 서브 도메인의 요청은 포트 8081에서 실행 중인 웹 서버로 전달됩니다.

server {
  listen 80;

  server_name api.example.com;

  location / {
    proxy_pass http://127.0.0.1:8081;
  }
}

이렇게 설정하면 api.example.com으로 접속하면 포트 8081에서 실행 중인 웹 서버에 요청이 전달됩니다.

이 방법을 사용하면 서브 도메인에 따라 내부의 포트만 다르게 실행 중인 웹 서버를 로드 밸런싱할 수 있습니다.

 

Nginx는 서브 도메인에 따라 요청을 라우팅할 때, 클라이언트 요청의 도메인과 포트를 그대로 유지하면서 요청을 전달합니다. 따라서, 클라이언트는 요청 도메인과 포트를 변경하지 않고도, 원하는 웹 서버에 요청을 보낼 수 있습니다.

예를 들어, 위의 설정을 사용하면, 클라이언트가 www.example.com으로 접속하면, Nginx는 클라이언트의 요청 도메인과 포트를 그대로 유지하면서 http://127.0.0.1:8080으로 요청을 전달합니다. 따라서, www.example.com 서브 도메인에서 응답을 받는 웹 서버는 클라이언트의 요청 도메인이 www.example.com이고, 포트가 80이라고 인식하게 됩니다.

물론, Nginx의 설정에서 proxy_set_header 지시어를 사용하여 클라이언트 요청의 도메인이나 포트를 변경할 수도 있습니다. 그러나, 일반적으로 서브 도메인에 따라 라우팅할 때는 클라이언트 요청의 도메인과 포트를 그대로 유지하는 것이 좋습니다.