프록시 서버(proxy server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 ‘프록시’, 그 중계기능을 하는 것을 프록시 서버라고 부른다. 프록시 서버를 사용하면 보안성, 성능, 안정성을 향상시킬 수 있다. 프록시 서버는 크게 포워드 프록시 서버(forward proxy server)와 리버스 프록시 서버(reverse proxy server)로 나뉜다.
우리가 흔히 말하는 ‘프록시 서버’란 포워드 프록시 서버를 의미한다. 프록시 서버는 아래 그림처럼 클라이언트 앞에 놓여있다. 다음 그림을 보면 클라이언트가 인터넷 웹서버에 요청을 보내면 중간에서 그 요청을 프록시 서버가 가로챈다. 그리고 프록시 서버는 해당 요청을 웹서버에게 다시 보내고 웹서버에게 받은 응답을 다시 클라이언트에게 전달한다.
이러한 특징을 가지는 포워드 프록시 서버는 왜 사용할까? 우선 정부, 학교, 기업 등과 같은 기관은 해당 기관에 속한 사람들의 제한적인 인터넷 사용을 위해 방화벽을 사용한다. 포워드 프록시 서버는 이런 제한을 위해 사용한다. 즉, 해당 기관에 속한 사람들이 그들이 방문하고자 하는 웹사이트에 직접적으로 방문하는 것을 방지한다. 이 말은 곧 포워드 프록시 서버는 기관에 속한 유저가 특정 컨텐츠에 접근하는 것을 방지하는데 사용된다는 말과 동일하다.
포워드 프록시 서버는 클라이언트 앞에 놓여져 있는 반면, 리버스 프록시 서버는 웹서버 앞에 놓여 있다.
리버스 프록시 서버는 로드 밸런싱에 사용된다. 유명한 웹 사이트는 하루에도 수백만명이 방문하는데 이때 발생하는 대량의 트래픽을 하나의 서버로 감당해 내기란 어려운 일이다. 하지만 리버스 프록시 서버를 여러개의 서버 앞에 두면 특정 서버가 과부화되지 않게 로드밸런싱이 가능하다.
또한 리버스 프록시를 사용하면 보안에 좋다. 리버스 프록시를 사용하면 본래 서버의 IP주소를 노출시킬 필요가 없기 때문에 해커들의 DDos 공격을 막는데 유용하다. 대신 CDN과 같은 리버스 프록시 서버가 공격의 타겟이 될 수는 있다.
그리고 리버스 프록시 서버에는 성능 향상을 위해 캐시 데이터를 저장할 수 있다. 만약 어떤 한국에 있는 유저가 미국에 웹서버를 두고 있는 사이트에 접속할 때, 리버스 프록시 서버가 한국에 있다고 가정해보겠다. 그러면 유저는 한국에 있는 리버스 프록시 서버와 통신한다. 따라서 프록시 서버에 캐싱되어 있는 데이터를 사용할 경우에는 더 빠른 성능을 보여줄 수 있다.
마지막으로 SSL 암호화에 좋다. 본래 서버가 클라이언트들과 통신을 할 때 SSL(or TSL)로 암호화, 복호화를 할 경우 비용이 많이 발생한다. 그러나 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고 나가는 응답을 암호화해주므로 클라이언트와 안전한 통신을 할 수 있으며 본래 서버의 부담을 줄여준다.
출처: https://losskatsu.github.io/it-infra/reverse-proxy/#1-프록시proxy-서버란