리버스 프록시(Reverse Proxy)란?
리버스 프록시(Reverse Proxy) 는 클라이언트의 요청을 대신 받아 서버로 전달하고, 서버의 응답을 받아 다시 클라이언트에게 반환하는 중간 서버임.
일반적으로 로드 밸런싱, 보안 강화, 캐싱, SSL 처리, 웹 가속화 등의 목적으로 사용됨.
1️⃣ 리버스 프록시 vs 포워드 프록시
리버스 프록시와 포워드 프록시는 개념이 다름.
구분 | 리버스 프록시 (Reverse Proxy) | 포워드 프록시 (Forward Proxy) |
요청 방향 | 클라이언트 → 리버스 프록시 → 백엔드 서버 | 클라이언트 → 포워드 프록시 → 인터넷 |
사용 목적 | 서버 보호, 로드 밸런싱, SSL 처리 | 사용자 익명성 보호, 웹 필터링 |
클라이언트가 아는 서버 | 리버스 프록시가 서버처럼 동작 | 클라이언트가 프록시를 직접 설정 |
사용 예시 | Nginx, HAProxy, AWS ALB, Cloudflare | 회사 내부망 프록시, VPN, TOR |
✅ 핵심 차이:
• 리버스 프록시는 서버를 보호하는 역할.
• 포워드 프록시는 클라이언트(IP) 보호 및 인터넷 접근을 제어하는 역할.
2️⃣ 리버스 프록시가 하는 역할
리버스 프록시는 여러 기능을 수행할 수 있음.
✅ 1. 로드 밸런싱 (Load Balancing)
• 여러 대의 백엔드 서버로 트래픽을 분산하여 서버 부하를 줄임.
• 대표적인 로드 밸런서 기능을 제공하는 리버스 프록시: Nginx, HAProxy, AWS ALB
📌 예제: Nginx 로드 밸런싱 설정
upstream backend_servers {
server app-server1:8080;
server app-server2:8080;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
}
}
위 설정은 app-server1, app-server2로 트래픽을 분산 처리함.
✅ 2. 캐싱(Caching)
• 정적 컨텐츠(이미지, CSS, JS)를 미리 저장하고 클라이언트 요청이 올 때 직접 응답하여 성능을 향상.
• CDN(Content Delivery Network) 서비스도 리버스 프록시 기반으로 동작함 (예: Cloudflare, Akamai).
📌 예제: Nginx 캐싱 설정
server {
location /images/ {
proxy_cache cache_zone;
proxy_pass http://backend;
}
}
✅ 3. SSL 종료 (SSL Termination)
• 클라이언트와 리버스 프록시 간의 SSL 통신을 담당하여 백엔드 서버가 SSL 부하에서 벗어나도록 함.
• HTTPS 요청을 처리한 후 내부적으로 HTTP로 변환하여 백엔드 서버와 통신.
📌 예제: SSL 인증서 적용
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://backend;
}
}
✅ 4. 보안 강화 (Security & DDoS Protection)
• IP 차단, 방화벽 역할, WAF(Web Application Firewall) 기능 제공.
• DDoS 공격 방어 (예: Cloudflare, AWS Shield).
• 특정 요청 패턴을 필터링하여 악성 트래픽 차단.
📌 예제: 특정 IP 차단
server {
location / {
deny 192.168.1.1;
proxy_pass http://backend;
}
}
✅ 5. 서비스 분리 (API Gateway 역할)
• API 요청을 특정 백엔드 서비스로 전달 (마이크로서비스 구조에서 사용).
• GraphQL, REST API Gateway 역할 수행.
📌 예제: API 요청을 각각 다른 서비스로 분배
server {
location /api/user/ {
proxy_pass http://user-service;
}
location /api/order/ {
proxy_pass http://order-service;
}
}
→ /api/user/ 요청은 user-service로, /api/order/ 요청은 order-service로 전달됨.
3️⃣ 리버스 프록시로 사용할 수 있는 소프트웨어
✅ 1. Nginx
• 대표적인 리버스 프록시 & 웹 서버.
• 로드 밸런싱, 캐싱, SSL 종료, 보안 기능 지원.
• 사용 예: CDN, API Gateway, 마이크로서비스 라우팅
✅ 2. HAProxy
• 고성능 로드 밸런서이자 리버스 프록시.
• L4, L7 로드 밸런싱 가능.
• 사용 예: 트래픽이 많은 사이트, 대규모 서버 운영 환경
✅ 3. AWS ALB(Application Load Balancer)
• AWS에서 제공하는 클라우드 로드 밸런서.
• HTTPS/SSL 종료, WAF 연동, 오토스케일링 가능.
✅ 4. Cloudflare
• DDoS 방어, CDN, SSL 제공.
• 트래픽을 보호하고 성능을 최적화하는 글로벌 리버스 프록시 서비스.
4️⃣ 리버스 프록시의 장점과 단점
장점 | 단점 |
서버 보안 강화 (직접 노출 방지) | 프록시 서버 장애 발생 시 전체 서비스 영향 가능 |
로드 밸런싱 및 성능 최적화 | 추가적인 설정이 필요 (특히 SSL, 캐싱 등) |
SSL 처리 부담 감소 | 잘못된 설정 시 요청이 정상적으로 전달되지 않을 수 있음 |
캐싱으로 속도 향상 가능 | 서버 리소스를 추가적으로 사용해야 함 |
5️⃣ 리버스 프록시 vs 로드 밸런서
리버스 프록시와 로드 밸런서는 개념이 겹치는 경우가 많음.
비교 항목 | 리버스 프록시 | 로드 밸런서 |
주요 기능 | 보안, SSL 종료, 캐싱, API Gateway | 트래픽 분산, 고가용성 유지 |
주요 목적 | 백엔드 서버 보호 & 최적화 | 여러 서버로 트래픽 균등 분배 |
예제 | Nginx, Cloudflare | AWS ALB, HAProxy |
✅ 정리하면
• 리버스 프록시는 보안, 캐싱, SSL 종료, API 라우팅을 담당.
• 로드 밸런서는 트래픽을 여러 서버에 분산하여 부하를 줄이는 역할.
6️⃣ 리버스 프록시 실전 사용 예제
예제: Nginx 리버스 프록시 설정
📌 /api 경로는 backend-server로 프록시 처리
📌 정적 파일(.css, .js, .jpg)은 캐싱하여 처리
server {
listen 80;
location /api/ {
proxy_pass http://backend-server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
location ~* \.(?:ico|css|js|jpg|png|gif)$ {
expires 30d;
access_log off;
}
}
✅ 효과
• /api/ 요청은 백엔드 서버로 전달됨.
• 정적 파일은 Nginx에서 직접 캐싱하여 성능 최적화.
📌 정리
✅ 리버스 프록시란?
• 클라이언트와 백엔드 서버 사이에서 요청을 중개하는 서버.
• 로드 밸런싱, 캐싱, 보안 강화, SSL 종료 등의 기능 수행.
✅ 언제 사용할까?
• 서버 보안을 강화하고 싶을 때 (백엔드 서버를 직접 노출하지 않음).
• 여러 개의 서버로 트래픽을 분산할 때 (로드 밸런싱).
• SSL 인증서 관리를 중앙에서 처리하고 싶을 때.
• API Gateway 역할을 수행하여 요청을 특정 서비스로 전달하고 싶을 때.
출처 : ChatGPT
'Infra' 카테고리의 다른 글
Micrometer (1) | 2025.04.10 |
---|---|
Prometheus (0) | 2025.04.09 |
Grafana (0) | 2025.04.08 |
메시지 브로커(Message Broker) (0) | 2025.03.15 |
Kafka 카프카 (1) | 2025.02.02 |