리버스 프록시
서버 측에 위치하여 클라이언트의 요청을 받아 내부 서버에 대신 전달해주는 프록시 서버입니다.
동작 흐름
클라이언트 → 인터넷 → 리버스 프록시 → 내부 서버 A
↓ → 내부 서버 B
클라이언트는 → 내부 서버 C
실제 서버를 모름
- 클라이언트가 리버스 프록시의 주소로 요청을 보냄
- 리버스 프록시가 적절한 내부 서버를 선택하여 요청을 전달
- 내부 서버가 응답을 리버스 프록시에 반환
- 리버스 프록시가 클라이언트에게 응답을 전달
주요 용도
| 용도 | 설명 |
| 로드밸런싱 | 여러 서버에 트래픽을 분산하여 부하를 줄임 |
| SSL 종료 | 프록시에서 HTTPS 암/복호화를 처리하여 내부 서버 부담 감소 |
| 캐싱 | 정적 콘텐츠를 프록시에서 바로 응답하여 속도 향상 |
| 보안 | 내부 서버의 IP와 구조를 외부에 노출하지 않음 |
| 압축 | 응답 데이터를 gzip 등으로 압축하여 전송 |
대표 소프트웨어
| 이름 | 특징 |
| Nginx | 경량, 고성능, 가장 널리 사용되는 리버스 프록시 |
| HAProxy | 로드밸런싱에 특화, TCP/HTTP 모두 지원 |
| AWS ALB/NLB | 클라우드 환경의 관리형 로드밸런서 |
| Apache httpd | mod_proxy 모듈로 리버스 프록시 기능 제공 |
Nginx 설정 예시
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers; # 내부 서버로 요청 전달
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
upstream backend_servers {
server 10.0.0.1:8080; # 내부 서버 A
server 10.0.0.2:8080; # 내부 서버 B
server 10.0.0.3:8080; # 내부 서버 C
}
포워드 프록시: 클라이언트를 보호 → 서버는 실제 클라이언트를 모름
리버스 프록시: 서버를 보호 → 클라이언트는 실제 서버를 모름