JaeWon's Devlog
article thumbnail
반응형

팀 회의 중 각 담당 업무 이슈에 관련 이야기를 나누다가 어떤 서버의 프록시 서버 설정에 문제가 있다는 이야기를 나누고 있었다.

그런데 팀장님이 갑잡스러운 질문을 하셨다.


팀장님 : 포워드 프록시랑 리버스 프록시 차이점을 알아???
나 : 어...음...  포워드 프록시는 서버에서 들어오는 쪽이고, 리버스 프록시는 서버에서 나가는 쪽을 관리를 하는 것으로 알고 있습니다.

틀린 말은 아니였지만, 대답을 하고 나서도 정확히 어떠한 역할을 하고 무슨 차이가 있는지는 명확하게 떠오르지 않았다.

그렇기에, 이번 글에서 위 2가지에 대해 정리해보고자 한다.


1. Proxy(프록시) 란?

- Proxy(프록시) 서버는 클라이언트(Client)가 자신을 토해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 말한다.

- 즉, 두 호스트가 통신할 때 서로 직접 통신하지 않고 중간에서 대리로 통신을 하도록 도와준다.

- Proxy(프록시)란 '대리' 라는 의미를 갖고 있으며, 서버와 서버사이에 중계 역할을 한다.

- Proxy를 사용하는 큰 이유로는 직접 통신할 수 없는 두 호스트 사이에서 대리로 통신을 수행하여 보안성, 성능, 안정성을 향상 시키기 위해서이다.

- Proxy 서버는 서버로 요청된 내용을 캐시 해놓고 동일한 요청 시 바로 응답을 주도록 설정할 수도 있어 시간과 리소스 사용을 절약할 수 있는 효과를 가져오기도 한다.

 

1-1. Proxy의 두 종류(Forward / Reverse)

- 프록시 서버는 네트워크 구조상 어디에 위치하는지 혹은 어느 방향으로 데이터를 제공하는지에 따라 Forward Proxy 와 Reverse Proxy 로 나뉜다.

Foward Proxy
Reverse Proxy

 

2. Forward Proxy(포워드 프록시)

- 클라이언트(사용자)가 인터넷에 직접 접근하는 게 아니라 Forward Proxy 가 요청을 받고 인터넷에 연결하여 서버 응답을 클라이언트에게 전달(Forward) 해준다.

- 프록시 서버는 Cache 를 사용하여 자주 사용되는 데이터라면 서버에 요청을 보내지 않고 캐시에서 가져와 응답하기 때문에 성능 향상이 가능하다.


우리가 흔히 말하는 '프록시 서버'가 바로 포워드 프록시 서버를 의미한다.

2-1. 포워드 프록시 사용 이점

  • 클라이언트 보안(Security)

- 보통 정부기관, 학교, 기업 등과 같은 곳에서는 속한 사람들의 제한적인 인터넷 사용을 위해 방화벽을 사용한다.

- 포워드 프록시 서버에 룰을 추가하여 특정 사이트에 접속하는 것을 막는다.

- 즉, 포워드 프록시 서버를 방화벽과 같은 개념으로 제한을 위해 사용한다고 보면 된다.

  • 캐싱(Caching)

- 클라이언트가 어떤 웹 페이지를 접근하면 포워드 프록시 서버는 해당 페이지의 정보를 캐싱(임시보관)한다.

- 이후 동일한 페이지를 접근하거나, 다른 클라이언트가 해당 페이지를 요청하면 캐시 된 정보를 그대로 반환한다.

- 이는 서버의 부하를 줄이는 데에 효과적이다.

  • 암호화(Encryption)

- 클라이언트 요청은 포워드 프록시 서버를 통과할 때 암호화된다.

- 암호화된 요청은 다른 서버를 통과할 때 필요한 최소한의 정보만 갖게 되는데, 이는 클라이언트의 IP를 감춰주는 보안 효과를 낸다.

 

3. Reverse Proxy(리버스 프록시)

- 클라이언트가 인터넷에 데이터를 요청하면 리버스 프록시 서버가 해당 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트에게 응답한다.

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


클라이언트쪽으로 데이터(response)를 밀어주는게 포워드(Forward)라면, 그 반대편인 서버쪽으로 데이터(request)를 밀어주는 것이 리버스(Reverse) 라 보면 된다.

- 내부 서버에 직접적으로 접근한다면 DataBase 에 접근이 가능하기 때문에 중간에 리버스 프록시를 두고 클라이언트와 내부 서버 사이의 다이렉트 통신을 막는다.


우리가 일반적으로 구성하는 WEB(Apache, Ngnix) <-> WAS(Tomcat) 분리 형태를 리버스 프록시 형태라고 보면 된다.
여기서 WEB(Apache, Nginx) 가 Reverse Proxy 가 된다.
하지만 만약 WEB, WAS가 한 서버에 존재한다면 Reverse Proxy 라고 볼 수 없다.

 

3-1. 리버스 프록시 사용 이점

  • 로드 밸런싱(Load Balancing)

- 우리가 자주 사용하는 구글, 네이버와 같은 웹 사이트는 하루에도 수백만, 수천만명이 방문한다.

- 이러한 대량의 트래픽을 하나의 싱글 서버로 감당하기는 어렵다.

- 이때, 리버스 프록시 서버를 여러개의 싱글 서버들 앞에 두면 특정 서버가 과부화 되지 않도록 로드 밸런싱하여 관리가 가능하다.

  • 서버 보안(Security)

- 리버스 프록시를 사용하면 서버측 보안에 좋다.

- 프록시 서버로 인해 본래 서버의 IP 주소를 노출시키지 않을 수 있어, 해커들의 DDos 공격과 같은 공격을 막는데 용이하다.

  • 캐싱(Caching)

- 포워드 프록시의 캐싱과 비슷한 기능을 한다.

- 즉, 서버의 데이터를 캐싱하고 있다가 동일한 요청인 경우 해당 데이터를 전달하여 빠른 성능을 보여준다.

  • 암호화(Encryption)

- SSL 암호화에 좋다.

- 서버가 클라이언트와 통신할 때 SSL(or TSL)로 암호화, 복호화를 할 경우 각각의 서버별로 비용이 많이 들게 된다.

- 리버스 프록시 서버를 사용하면 들어오는 요청과 복호화하는 응답을 모두 관리가 가능하여 서버의 부담을 줄여준다.

 

4. 포워드 프록시 VS 리버스 프록시

  Forwad Proxy Reverse proxy
  프록시 서버 위치 클라이언트 앞 WEB/WAS 서버 앞
  프록시 서버 통신 대상 클라이언트와 Proxy 서버가 통신 Proxy 서버와 내부 서버가 통신
  End Point 실제 서버 도메인 프록시 서버의 도메인
  감춰지는 대상 클라이언트 정보 서버 정보

참고

- https://inpa.tistory.com/entry/NETWORK-%F0%9F%93%A1-Reverse-Proxy-Forward-Proxy-%EC%A0%95%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EC%A0%95%EB%A6%AC

- https://bcp0109.tistory.com/194

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!