프록시 서버란 무엇일까?
여기저기서 주워듣긴 했는데 정확히 무슨 역할을 하는지 궁금했었다!
그래서 오늘은 프록시 서버에 대해서 정리해보려고 한다 🥸
프록시 서버란?
프록시 서버(proxy server)는 클라이언트가 자신을 거쳐 다른 네트워크에 접속할 수 있도록 중간에서 대리해주는 서버를 말한다. (클라이언트와 서버 사이에서 통신을 대리로 수행하는 행위 자체를 프록시라고 한다.)
프록시 서버는 네트워크 상 어디에 위치하느냐, 혹은 어느 방향으로 데이터를 제공하느냐에 따라
크게 포워드 프록시 서버(forward proxy server)와 리버스 프록시 서버(reverse proxy server)로 나뉜다.
포워드 프록시 서버
우리가 흔히 말하는 프록시 서버는 포워드 프록시 서버를 의미한다.
클라이언트에서 서버에 요청을 할 때 직접 요청을 하는 것이 아니라 프록시 서버를 거치는 방식이 포워드 프록시이다.
즉, 아래 그림처럼 프록시 서버가 클라이언트 바로 뒤에, 인터넷 사이에 놓여 있다.
그렇다면 포워드 프록시를 사용하는 이유는 무엇일까?
보안, 캐싱, 암호화 등의 이점이 있기 때문이다.
포워드 프록시 서버의 이점
- 보안
내부망에 속한 사람들이 어떤 웹사이트에 직접적으로 방문하는 것을 방지할 수 있다.
(포워드 프록시 서버에 룰을 추가해서 특정 사이트에 접속하는 것을 막을 수 있다!) - 캐싱
프록시 서버는 이전에 했던 요청들을 프록시 서버에 캐시해둔다.
이를 사용해 서버의 부하를 줄이고, 속도를 향상시킬 수 있다. - 익명성
클라이언트의 요청은 포워드 프록시 서버를 통과할 때 암호화되는데, 이는 클라이언트의 IP를 감춰주게 된다.
따라서, 본 서버에서 IP 주소를 역추적해도 정확한 대상을 파악하기 어렵다.
IP를 추적해도 프록시 서버만 보이기 때문이다.
(이러한 특성으로 인해 프록시 서버를 우회에 사용하기도 한다.)
리버스 프록시 서버
리버스 프록시는 아래 그림처럼 프록시 서버가 WS/WAS 앞에 놓여 있는 것을 말한다.
클라이언트가 웹서비스에 접근할 때 리버스 프록시가 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트에게 전달한다.
인터넷과 내부 서버 사이에 리버스 프록시 서버를 두는 이유는 보안 때문이다.
보통 기업에서는 DMZ라고 부르는 구간이 있는데 (외부망 <-> DMZ <-> 내부망),
WAS의 보안을 위해 보통 DMZ에 리버스 프록시 서버를 두고, WAS는 내부망에 위치시킨 후 서비스한다.
그렇다면 리버스 프록시 서버를 사용하는 이유는 또 무엇일까?
포워드 프록시 서버처럼 비슷한 이점이 있지만, 서버 측 관점이라는 것이 조금 다르다!
리버스 프록시 서버의 이점
- 로드밸런싱
리버스 프록시 서버를 여러 개의 서버들 앞에 두면 특정 서버가 과부하되지 않게 로드밸런싱이 가능하다.
(여기서 로드밸런서와의 차이점이 궁금할 수 있는데, 로드밸런서는 리버스 프록시 서버의 한 종류이다!) - 보안
본래 서버의 IP 주소가 노출되지 않으므로 해커들의 DDoS 공격과 같은 공격을 막는데 유용하다. - 캐싱
리버스 프록시 역시 캐싱이 가능해, 더 빠른 성능을 보여줄 수 있다. - 암호화
본래 서버가 클라이언트와 통신을 할 때 SSL(or TLS)를 사용할 경우 비용이 많이 들 수 있다.
리버스 프록시 서버를 사용하면 들어오고 나가는 데이터를 암/복호화해주기 때문에
본래 서버의 부담을 줄여줄 수 있다.
포워드 프록시 서버와 리버스 프록시 서버의 차이점 중 가장 중요한 부분은
포워드 프록시 서버는 내부망에서 클라이언트와 프록시 서버가 통신하는 것이고,
리버스 프록시 서버는 내부망에서 프록시 서버와 내부망 서버가 통신한다는 점인 것 같다!
이로 인해서 감춰지는 대상이
포워드 프록시는 클라이언트, 리버스 프록시는 서버인 것도 짚고 넘어가면 좋을 것 같다.