프록시 서버

혜림·2024년 4월 11일
0

프록시(Proxy)란?

프록시(Proxy)는 "대리인" 역할을 하는 서버이다.

웹 환경에서 프록시 서버의 역할은 웹 클라이언트와
웹 서버 사이에서 요청한 데이터를 전달하는것이다. 
이때 프록시 서버는 웹서버에서 가져온 데이터를 
웹 클라이언트에게 전송한후 데이터를 캐시에 저장한다. 
또 다른 웹 클라이언트가 같은 데이터를 요청하면 
웹서버가아니라 자신의 캐시에서 해당데이터를 보낸다.

=> 클라이언트에게 빠르게 필요한 내용을 보낼수있다.


① '웹 브라우저 1'에서 웹 서핑을 요청하면
②③ 프록시 서버가 대신 웹 서버에 접근해 데이터를 가져온다.
④ 가져온 데이터를 우선 캐시에 저장해둔다.
⑤ '웹 브라우저 1'에게 요청한 데이터 전송
⑥ '웹 브라우저 2'가 웹 서핑을 요청(같은요청이라 가정)
⑦ 프록시서버는 자신의 캐시에 있던 데이터를 가져와 ⑧웹 브라우저2에게 전달.

  • 이와 같은 방식으로 웹 클라이언트의 전반적인 웹서핑 속도가 향상된다.

Proxy의 종류

  • 포워트 프록시와 리버스 프록시로 나뉘어진다.
  • 기본적으로 포워드 프록시는 클라이언트쪽, 리버스프록시는 서버쪽의 설정을한다.

포워드 프록시

클라이언트 대신 프록시 서버가 목적 서버에 통신해주는 구성을 "포워드 프록시"라고한다.

  • 프록시서버는 그림처럼 클라이언트 바로 뒤에 놓여있다.
    같은 내부망에 존재하는 클라이언트의 요청을 받아 인터넷을 통해 외부 서버에서 데이터를 가져와 클라이언트에게 응답해준다.
  • 즉, 클라이언트가 서버에 접근하고자 할때, 클라이언트는 타켓 서버의 주소를 포워드 프록시에 전달하여, 포워드 프록시가 인터넷으로 요청된 내용을 가져오는 방식이다.

💡우리가 흔히 알고있는 '프록시 서버'란 바로 포워드 프록시 서버를 의미하는것이다.

포워드 프록시의 장점

캐싱(Caching)

프록시 서버에 캐시를 저장할수있다.
만약 클라이언트 A의 요청에 대한 응답을 서버에 전달받으면 해당 내용을 응답할때 프록시 내부에 해당하는 요청과 답변을 캐싱한다.
다시 동일한 페이지를 리퀘스트했을때 캐시에 남아있는 정보를 클라이언트에게 준다.
사이트에 접속하는 속도가 빨라지며, 서버의 부하를 줄이는 효과도있다.

암호화

클라이언트 요청은 포워드 프록시 서버를 통과할때 암호화된다.
암호화된 요청은 다른 서버를 통과할때 필요한 최소한의 정보만 갖게되는데, 이는 클라이언트의 ip를 (보안을 위해)감춰주는 보안효과를 내준다.

리버스 프록시

리벅스 프록시는 아래 그림처럼 웹서버/WAS앞에 놓여있는 것을 말한다.

클라이언트는 웹 서비스에 접근할때마다 웹서버에 요청하는 것이아닌, 프록시로 요청하게 되고, 프록시가 배후(reverse)의 서버로부터 데이터를 가져오는 방식이다.

클라이언트 쪽으로 데이터를(response)를 밀어주는게 포워드라면, 반대편인 서버쪽으로 데이터를(request)를 밀어주는 것이 리버스 프록시라고 할수있다.

💡여기서 reverse의 뜻은 "역전, 거꾸로"가 아닌 "배후, 뒷쪽"의 뜻이다. 즉, 배후에 있는 서버에 대한 Proxy라고 생각할수있다.


내부 서버가 직접 서비스를 제공해도되지만 이렇게 구성하는 이유는 보안때문이다.

  • 보통기업의 네트워크 환경에는 DMZ라고 부르는 내부네트워크/외부네트워크 사이에 위치하는 구간이 존재한다.(내부/외부 네트워크 둘다 접근할수있는공간)이 구간에는 보통 메일서버, 웹서버, FTP서버 등 외부 서비스를 제공하는 서버가 위치하게 된다.
  • WAS를 DMZ에 놓고 서비스 해도 되지만 보안상 문제가 있기 때문에 그렇게 하진않는다. WAS는 DB서버와 연결되어있으므로,WAS가 해킹당할 경우 DB서버까지 해킹당할수있는 문제가 발생할수있기 때문이다.
  • 따라서 리버스 프록시 서버를 DMZ에 두고 실제 서비스 서버는 내부망에 위치시킨후 서비스하는것이 일반적이다.

리버스 프록시의 이점

로드밸런싱

유명한 웹 사이트는 하루에 수백명이 방문한다. 그러한 대량의 트래픽을 하나의 싱글 서버로 감당해내기 어렵다.
하지만 리버스 프록시 서버를 여러개의 본 서버들 앞에 두면 특정 서버가 과부화 되지않게 로드밸런싱이 가능하다.

서버 보안

본래 서버의 IP주소를 노출시키지않을수있다.해커들의 DDoS공격과 같은 공격을 막는데 유용하다.
그림을 보면, 클라이언트는 인터넷을 통해 리버스 프록시 서버url에게 요청한다. 그리고 리버시 프록시는 본서버에게 요청을 경유해서 보내게된다. 이렇게 되면 클라이언트는 본 서버의 url을 모른채 리버스 프록시 url을 통해 서비스를 이용하게 되고, 이는 즉 본서버의 정보를 숨기는 효과가된다.

캐싱

포워드 프록시의 캐싱과 비슷한 기능을 한다고 할수있다.
한국에 있는 유저가 미국에 웹서버를 두고있는 사이트에 접속할때, 리버스 프록시서버가 한국에 있다고가정하면 한국에 있는 유저는 한국에 있는 리버스 프록시 서버와 통신해서 리버스 프록시 서버에 캐싱되어있는 데이터를 사용할 경우에는 더 빠른 성능을 보여줄수있따.

암호화

서버가 클라이언트들과 통신을 할때 SSL(or TSL)로 암호화, 복호화를 할 경우 비용이 많이 들게된다. 그러나 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고 나가는 응답을 암호화해주므로 클라이언트와 안전한 통신을 할수있으며 본래 서버의 부담을 줄여줄수있다.

💡참고 자료
📍https://engineer-mole.tistory.com/288
📍https://velog.io/@dev_leewoooo/Forward-Proxy-Reverse-Proxy%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC

profile
안녕하세요! :)

0개의 댓글