인프라

리버스 프록시 서버 (Reverse Proxy)

소행성왕자 2025. 3. 13. 15:11

리버스 프록시 서버(Reverse Proxy Server)는 클라이언트의 요청을 받아 적절한 백엔드 서버(예: 애플리케이션 서버, 데이터 서버 등)로 전달하고, 응답을 클라이언트에게 반환하는 역할을 하는 서버입니다.

즉 DMZ 구간에 리버스 프록시 서버를 구성하고 백엔드 서버로 라우팅 하는 역할을 합니다.

한개의 도메인으로 서로 다른 프로젝트 즉 다른 서버를 연결하고 싶을때 사용합니다.

 

[인터넷]
┌───────────┴───────────┐
│ 방화벽 (FW1) │
└───────────┬───────────┘
┌───────────┴───────────┐
│ 리버스 프록시 서버 (DMZ)
│ (Apache httpd) │
└───────────┬───────────┘
┌───────────┴───────────┐
│ 방화벽 (FW2) │
└───────────┬───────────┘
┌──────────────┴──────────────┐
│ 내부망 (Internal Network) │
│ ┌─────────────────────────┐ │
│ │ 애플리케이션 서버 (Tomcat) │ |
│ ├─────────────────────────┤ │
│ │ WebSocket 서버 (등등) │ |
│ └─────────────────────────┘ │
└─────────────────────────────┘

ssl.conf

<VirtualHost *:443>
ServerName aa.com
# 1.1.1.1:8099으로 전달되는 경로 (예: /aa)
ProxyPass /aa http://1.1.1.1:8099/aa
ProxyPassReverse /aa http://1.1.1.1:8099/aa
# 9.9.9.9 서버로 전달되는 경로 (예: /)
ProxyPass / http://9.9.9.9/
ProxyPassReverse / http://9.9.9.9/
</VirtualHost>

소스 설명

Apache는 리버스 프록시(Reverse Proxy) 역할을 수행하며, 특정 URL 경로에 대한 요청을 다른 서버로 전달합니다.

(1) /aa 경로의 프록시 설정

# 1.1.1.1:8099으로 전달되는 경로 (예: /aa)
ProxyPass /aa http://1.1.1.1:8099/aa
ProxyPassReverse /aa http://1.1.1.1:8099/aa

클라이언트가 https://aa.com/aa로 요청하면 Apache는 이를 http://1.1.1.1:8099/aa로 전달합니다.

ProxyPassReverse는 응답 헤더의 Location 또는 Redirect 값을 수정하여 클라이언트가 올바르게 https://aa.com/aa로 다시 요청하도록 보정합니다.

(2) 기본 / 경로의 프록시 설정

ProxyPass / http://9.9.9.9/
ProxyPassReverse / http://9.9.9.9/

 

 

 

/ (루트 경로)로 오는 모든 요청을 http://9.9.9.9/로 전달합니다.

즉, https://aa.com/로 접속하면 실제 응답은 http://9.9.9.9/ 서버에서 제공됩니다.

ProxyPassReverse는 위와 동일한 역할을 합니다.