본문 바로가기
Programming

Reverse Proxy VS Forward Proxy 차이점

by 개발자 염상진 2022. 9. 20.

 

Nginx는 Apache에서 불필요한 기능을 최대한 덜어내고 빠르게 웹서버를 구동시킬 수있는 웹 서버 프로그램입니다. 두 서버간 대표적인 차이점은 제공하는 proxy 기능에 있습니다. Apache의 경우 mod_proxy에서 forward proxy와 reverse proxy 기능 둘다 제공하지만 Nginx에서는 Reverse Proxy만 제공합니다. 그럼 forward / Reverse Proxy는 어떤 차이가 있을까요?

 

Proxy란?

 

proxy는 클라이언트의 요청을 대리 해주는 중계자 역할을 합니다. 즉 클라이언트와 서버간 직접적인 통신이 확립되는 것이 아니라, 클라이언트의 프록시 서버와 서버간의 통신이 만들어지는 것입니다. 

 

웹 애플리케이션에서 프록시를 쓰는 이유는 여러가지가 있습니다.

 

1. 보안 이슈

클라이언트가 서버에게 요청을 보낼 때 프록시를 제끼고 직접적으로 요청을 보내면 서버의 경로가 그대로 노출되게 됩니다. 악의적인 사용자는 서버의 정보 요청경로를 통해 DDos 같은 공격을 쉽게 보낼 수 있게 됩니다. 프록시를 통해 요청을 보내게 되면 경로를 쉽게 알 수 없게 됩니다.

 

 

 

 

2. 데이터 캐시

캐시는 자주 사용하는 데이터를 저장한 후 재사용하는 개념입니다. 클라이언트가 자주 사용하는 /GET /value 요청이 있다고 가정하면, 프록시 서버에서는 요청들을 저장한 후 재사용하면서 서버를 거치지 않고도 데이터를 전달받을 수 있게 됩니다.

 

Forword Proxy VS Reverse Proxy

 

 

 

이렇게 Proxy는 다양한 이유로 사용이 되고 있습니다. 지금은 거의 필수적인 웹 서버의 기능이라고 할 수 있는데요, 프록시에는 두가지 종류가 있습니다.

 

1. Forward Proxy

먼저 포워드 프록시는 클라이언트측에서 요청을 보낼 때 사용되는 프록시 서버를 의미합니다. 포워드 프록시에는 캐싱(cache) 기능이 있어서 사용자가 자주 요청하는 요청들은 서버를 거치지 않고도 응답할 수 있게 됩니다. 서버의 응답시간이 단축되는 효과가 있습니다.

 

 

 

추가적으로 포워드 프록시에서는 사용자가 접근할 수 있는 사이트들을 지정할 수 있어 보안 관리에 신경을 쓸수가 있습니다. 특히 인트라넷을 이용하는 군대, 기업에서 내부망에서 접근할 수 있는 사이트들을 관리할 수 있습니다. (회사에서 쇼핑몰 사이트 접속 차단시키는 .. 등등)

 

2. Reverse Proxy 

포워드 프록시와 반대로 서버에서 클라이언트 측으로 데이터를 전달할 때 사용되는 프록시입니다. Reverse Proxy를 이용하면 서버에 들어오는 요청 트래픽을 효율적으로 분산하는 Load Balance를 구현할 수 있습니다. 10대의 서버가 있다고 가정하면 그 중 가장 트래픽이 적은 서버를 찾아서 효율적인 데이터 응답을 구현할 수 있습니다. 

 

Reverse Proxy를 이용하면 크리티컬한 보안 이슈가 발생할 수 있는 DB 접근을 어느정도 막을 수 있습니다. Reverse Proxy 설정을 한 웹 서버를 방화벽으로 둘러싼 후 혹시나 웹 서버가 털리더라도 DB까지 함께 털릴 일을 줄일 수 있습니다. 

물론 Reverse Proxy에서도 서버로의 요청 경로를 숨길 수가 있기 때문에 서버의 보안을 구현해낼 수도 있습니다. 

 

 

Proxy 구현

 

React 애플리케이션에서 서버로 요청을 보낼 때 proxy를 설정할 수 있습니다.

예를 들어 서버의 주소가 https://localhost 라고 가정합니다.

클라이언트는 프록시 서버의 주소로 https://localhost/api/v1이라고 지정합니다.

이제 사용자 정보를 반환하는 서버 API 경로가 https://localhost/api/v1/auth라고 가정합니다.

이제 클라이언트는 서버로 부터 사용자 정보를 받아오기 위해 전체 경로를 입력할 필요가 없습니다. 

 

axios('/auth')만 입력해주면 클라이언트의 프록시 서버에서 경로를 전달받아 전체 경로를 입력해 서버로 부터 요청을 받아올 수가 있게 됩니다. 

 

 

 

Nginx 란? 웹 서버 개념 이해하기

웹 서버란? 팀 버너스 리가 구축한 월드 와이드 웹(WWW)은 인터넷 네트워크에서 동작하는 프로토콜입니다. 인터넷에서는 클라이언트가 웹 서버에게 요청을 보내고 연결은 HTTP 프로토콜로 연결이

about-tech.tistory.com

 

댓글