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

반응형

리버스 프록시 서버(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

    # https://uuu.com 서버로 전달되는 경로 (예: /)
	SSLProxyEngine On
	ProxyPass / https://uuu.com
    ProxyPassReverse / https://uuu.com
</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 / https://uuu.com
ProxyPassReverse / https://uuu.com

 

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

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

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

이 슈1

error during SSL handshake with remote server returned by / 오류 발생시

SSLProxyEngine On 설정에 추가해주면 됩니다.

단 추가시 ProxyPass / https://uuu.com 바로 위에 추가해야 합니다.

이슈2

어제는 aa.com 접속하면 잘되던 것이 오늘 aa.com 접속하니  error during SSL handshake with remote server 발생

aa.com 은 아파치 설정에 TLS1.2 TLS1.3

openssl s_client -connect aa.com:443

openssl s_client -connect aa.com:443 -tLS1_2

uuu.com 은 TLS1.2 사용

openssl s_client -connect uuu.com:443

openssl s_client -connect uuu.com:443 -tLS1_3

-->

uuu.com 을 TLS.1.3 으로 변경요청

aa.com 에 아파치에 TLS1.3 변경하니 proxy Error 발생 안함

반응형