일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- minikube
- Elasticsearch
- PETERICA
- 기록으로 실력을 쌓자
- kotlin querydsl
- CKA
- Kubernetes
- APM
- CKA 기출문제
- 정보처리기사실기 기출문제
- 오블완
- tucker의 go 언어 프로그래밍
- 티스토리챌린지
- AI
- 공부
- mysql 튜닝
- kotlin
- aws
- kotlin coroutine
- Linux
- 정보처리기사 실기 기출문제
- golang
- Pinpoint
- docker
- go
- AWS EKS
- 코틀린 코루틴의 정석
- Spring
- CloudWatch
- Java
- Today
- Total
피터의 개발이야기
[Nginx] Nginx 가상 호스팅 설정 본문
ㅁ 관련 글
ㅁ 들어가며
Nginx의 가상 호스팅 설정 방법에 대해 정리하였다. 가상 호스팅은 하나의 서버에서 여러 웹사이트를 운영할 수 있게 해준다. 이 글에서는 가상 호스팅의 개념부터 실제 설정 방법, 그리고 리버스 프록시 설정 방법을 정리하였다.
ㅁ 가상 호스팅 개념 이해하기
가상 호스팅(Virtual Hosting)은 하나의 웹 서버에서 여러 개의 독립적인 웹사이트를 호스팅하는 방법이다. 각 웹사이트는 고유한 도메인 이름을 가지며, 서로 독립적으로 운영된다.
ㅇ 주요 특징
- 하나의 IP 주소로 여러 도메인 서비스 가능
- 각 웹사이트마다 독립적인 설정 가능
- 서버 리소스 효율적 사용
ㅇ 가상 호스팅의 유형
- 이름 기반 가상 호스팅: 도메인 이름으로 웹사이트 구분
- 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' 카테고리의 다른 글
[Nginx] NGINX 보안 강화를 위한 기본 설정 (0) | 2025.03.22 |
---|---|
[Nginx] Nginx 설정을 외부 파일로 관리하는 효율적인 방법 (0) | 2025.03.19 |
[Nginx] Nginx의 기본 이해와 주요 기능 (0) | 2025.03.18 |
[Nginx] NGINX으로 HLS(HTTP Live Streaming) 스트리밍 캐싱설정 (0) | 2025.03.14 |
[Nginx] NGINX에서 정적 파일 캐시 설정하는 방법 (0) | 2025.03.11 |