관리 메뉴

피터의 개발이야기

[Nginx] Nginx 가상 호스팅 설정 본문

DevOps/nginx

[Nginx] Nginx 가상 호스팅 설정

기록하는 백앤드개발자 2025. 3. 20. 06:45
반응형

ㅁ 관련 글

[Nginx] Nginx의 기본 이해와 주요 기능

 

ㅁ 들어가며

 Nginx의 가상 호스팅 설정 방법에 대해 정리하였다. 가상 호스팅은 하나의 서버에서 여러 웹사이트를 운영할 수 있게 해준다. 이 글에서는 가상 호스팅의 개념부터 실제 설정 방법, 그리고 리버스 프록시 설정 방법을 정리하였다.

 


ㅁ 가상 호스팅 개념 이해하기

  가상 호스팅(Virtual Hosting)은 하나의 웹 서버에서 여러 개의 독립적인 웹사이트를 호스팅하는 방법이다. 각 웹사이트는 고유한 도메인  이름을 가지며, 서로 독립적으로 운영된다.

 

ㅇ 주요 특징

  • 하나의 IP 주소로 여러 도메인 서비스 가능
  • 각 웹사이트마다 독립적인 설정 가능
  • 서버 리소스 효율적 사용

ㅇ 가상 호스팅의 유형

  1. 이름 기반 가상 호스팅: 도메인 이름으로 웹사이트 구분
  2. IP 기반 가상 호스팅: IP 주소로 웹사이트 구분

ㅁ 단일 호스트 설정

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com/html;
    index index.html;
}

ㅇ 기본적인 Nginx 설정인 단일 호스트 설정이다.

 

ㅁ 다중 호스트 설정

ㅇ 여러 웹사이트를 호스팅하려면 각 도메인에 대한 서버 블록을 생성한다. 

   server {
       listen 80;
       server_name example1.com;

       root /path/to/website1;
       index index.html;
   }

   server {
       listen 80;
       server_name example2.com;

       root /path/to/website2;
       index index.html;
   }

ㅇ  example1.com과 example2.com 도메인에 대한 요청을 처리하기 위해 각각 서버 블록을 생성하였다.

ㅇ 각 도메인마다 이 과정을 반복하면 여러 웹사이트를 호스팅할 수 있다.

 

ㅁ 응용설정, nginx를 이용한 BlueGreen 배포 방식

nginx를 이용한 BlueGreen 배포가 가능하다.

 두개의 port를 이용해 spring을 기동시키고, nginx를 통해 1초 미만으로 port를 switch할 수 있다.

ㅇ 관련글: [shell] Spring BlueGreen 배포를 위한 Shell Script(with nginx)

 


ㅁ 리버스 프록시 설정하기

리버스 프록시를 사용하면 클라이언트의 요청을 백엔드 서버로 전달하고 그 응답을 클라이언트에게 반환할 수 있다.

또한 백엔드 서버의 부하를 분산하고 보안을 강화할 수 있다.

ㅇ 관련 글

 - [Nginx] Nginx에서 특정 URL만 허용하는 방법
 - [Nginx] Nginx의 허용IP와 Proxy_pass 설정

proxy_pass 설정

location /app {
    proxy_pass http://localhost:8080/app;
}

ㅇ  /app 요청은 http://localhost:8080/app 으로 전달되어 처리된다.

 

헤더 설정

location /app {
    proxy_pass http://localhost:8080/app;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
}

 

버퍼링 설정

location /app {
    proxy_pass http://localhost:8080/app;
    proxy_buffering off;
}

 

 

ㅁ proxy_buffering의 기능 설명

기본동작(proxy_buffering on;)

ㅇ NGINX는 데이터를 버퍼링하여 성능을 최적화하여 트래픽이 많은 경우 유리함.

proxy_buffering의 기본은 on 상태

ㅇ 응답을 버퍼링해서 클라이언트가 응답을 한 번에 받을 수 있게 한다.

ㅇ 실시간 스트리밍 같은 경우에는 지연(Latency)이 발생할 수 있다.

 

proxy_buffering off; 

ㅇ 실시간 응답이 필요한 경우 사용한다.

ㅇ NGINX가 프록시 서버에서 받은 응답을 디스크나 메모리에 저장하지 않고 바로 클라이언트에게 전달

ㅇ 데이터를 즉시 클라이언트에게 전달하면 지연이 없고, 메모리나 디스크에 저장되지 않는다.

필요한 경우

 - WebSocket, SSE(Server-Sent Events) 같은 실시간 연결

 - HLS (HTTP Live Streaming) 같은 스트리밍 서비스(정적파일 아닌 경우)

 - NGINX를 Reverse Proxy로 사용할 때 빠른 응답이 필요한 경우

ㅁ proxy_cache과 proxy_buffering off의 관계

 

proxy_buffering off;을 사용하면 proxy_cache 기능을 사용할 수 없다.

proxy_cache는 기본적으로 proxy_buffering를 이용하여 메모리나 디스크에 저장하여 캐싱한다.

proxy_buffering off;을 설정하면 proxy_cache가 작동하지 않고 Miss 상황이 발생한다. 

 

ㅇ관련 글

[Nginx] NGINX에서 정적 파일 캐시 설정하는 방법

ㅁ 마무리

Nginx의 가상 호스팅 설정을 통해 하나의 서버에서 여러 웹사이트를 효율적으로 운영할 수 있다.  Nginx가 리버스 프록시 역할을 수행하며 백엔드 서버로 요청을 전달한다. 또한 리버스 프록시 기능을 활용하면 유연한 웹 서버 구성이 가능해진다. 

 

ㅁ 함께 보면 좋은 사이트

AI가 알려주는 Nginx - 서버 관리자를 위한 필수 가이드

[DevOps] Nginx 로 가상 호스트 구현하기

How to Set up & Use NGINX as a Reverse Proxy

반응형
Comments