프록시 서버(Proxy Server)
프록시 서버(Proxy Server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다.
서버와 클라이언트 사이에 중계기로써 대리로 통신을 수행하는 것을 가리켜 '프록시' 그 중계 기능을 하는 것을 프록시 서버라고 부른다.
좀 더 구체적으로 설명하면 아래와 같이 진행된다.
- 클라이언트에서 프록시 서버로 전달할 요청을 보낸다. (클라이언트 -> 프록시)
- 프록시 서버는 클라이언트로부터 전달받은 요청을 서버에 요청한다. (프록시 -> 서버)
- 서버는 요청에 맞게 데이터를 프록시 서버로 전달한다. (서버 -> 프록시)
- 프록시 서버는 서버로부터 전달받은 데이터를 클라이언트에 전달한다. (프록시 -> 클라이언트)
이와 같이 프록시 서버는 클라이언트와 서버 사이에서 중개인 역할을 한다고 보면 된다.
프록시 서버의 사용 이유
보안
클라이언트에서 서버에 요청을 직접적으로 보내게 될 경우 서버의 주소가 쉽게 노출되고 이를 통해서 다른 익명의 사용자가 서버로 접근하기 쉬워지게 된다.
하지만 프록시 서버를 거쳐 요청을 할 경우 익명의 사용자는 서버의 위치는 알아내기가 쉽지 않다.
즉, 서버의 IP를 숨기는 것이 가능하고 이는 외부로부터 위험을 막아주는 역할을 한다.
캐시
캐시를 사용한다는 것은 곧 속도를 빠르게 하는데 도움을 준다.
프록시 서버는 이전에 했던 요청들을 저장(캐시) 해두어 다음번에 재요청을 보낼 때 서버를 거치지 않고 데이터를 주고받을 수 있기 때문에 속도가 더 빨라질 수 있다.
우회
보안에서 클라이언트에서 서버의 주소를 감출 수 있다고 언급했다.
이와 같이 IP주소를 감출 수 있기 때문에 어느 곳에서 접속한 지를 숨길 수가 있다.
이는 곧 IP를 통해 접속을 감지하는 사이트를 프록시 서버를 통해 우회할 수가 있다.
포워드 프록시(Forward proxy)
사용자가 google.com에 연결하려고 하면 사용자 PC가 직접 연결하는 게 아니라 포워드 프록시 서버가 요청을 받아서 google.com에 연결하여 그 결과를 클라이언트에 전달(forward) 해 준다.
포워드 프록시는 대개 캐싱 기능이 있으므로 자주 사용되는 컨텐츠라면 월등한 성능 향상을 가져올 수 있으며 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할 수 있으므로 보안이 매우 중요한 기업 환경등에서 많이 사용한다.
리버스 프록시(Reverse Proxy)
A라는 회사가 example.com이라는 고객용 웹 서비스를 만들었을 경우 이를 서비스하기 위해서는 리버스 프록시에 대한 이해가 필수다.
리버스 프록시로 웹 서버를 설정할 경우 사용자가 example.com 웹 서비스에 데이터를 요청하면 Reverse proxy는 이 요청을 받아서 내부 서버(보통 WAS입니다.)에서 데이터를 받은 후에 이 데이터를 사용자에게 다시 전달하게 된다.
대부분의 WAS는 Web Server 기능을 제공하므로 Reverse proxy가 없이 내부 WAS가 직접 서비스를 제공해도 되지만 이렇게 구성하는 이유 중 여러 가지가 있다.
리버스 프록시(Reverse Proxy) 장점
보안
위 그림과 같이 DMZ 내에 외부에 서비스를 제공하는 서버(메일 서버, 웹 서버, DNS 서버)를 배치하고 네트워크는 1,2차 방화벽으로 보호한다.
example.com 서비스를 제공하려면 WAS를 DMZ에 놓고 서비스해도 되지만 이런 서비스는 보통 내부의 DBMS 서버와 연결되어 있다.
만약 WAS가 최전방에 있으면 WAS가 털릴 경우 DBMS와 관련 서버까지 모두 같이 털리는 심각한 보안 문제가 발생할 수 있다.
이 때문에 DMZ 존에 웹 서버를 두고 리버스 프록시로 설정하고 WAS는 내부망에 위치시키게 설정한다.
리버스 프록시로 동작하는 웹 서버만 내부 WAS와 연결하도록 설정하므로 웹 서버가 해킹당해도 2차 방화벽을 다시 뚫어야 하므로 더 보안에 강해질 수 있다.
속도(Speed)와 안정성
reverse proxy 개념을 이해하고 구성하면 이 앞에 Cache Server를 붙이거나 SSL 하드웨어 가속기를 연동하는 등 아키텍처 측면에서 성능 향상을 하기가 용이해진다.
아주 심플하게 생각한다면 cloudflare 나 akamai 같은 CDN 도 Reverse proxy로 동작하는 캐시 서버일 뿐이다.
CDN을 연동한다면 DDOS 공격을 효과적으로 방어하고 서비스를 빠르고 안정적으로 제공할 수 있다.
신뢰성(reliability) 증대
리버스 프록시를 cluster로 구성해 놓으면 가용성을 높일 수 있고 사용자가 증가하는 상황에 맞게 Web Server나 WAS를 유연하게 늘릴 수 있는 장점이 있다.
리버스 프록시 앞에 L4 나 load balancer를 붙이면 Round Robin(RR), Least connection 등 상황에 맞는 분배 알고리즘을 적용해 서비스 신뢰성을 높일 수 있다.
참고 자료
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%EC%84%9C%EB%B2%84
https://surfshark.com/ko/blog/proxy-server
https://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html
'백엔드 > 네트워크' 카테고리의 다른 글
[네트워크] HTTPS (0) | 2023.04.20 |
---|---|
[네트워크] HTTP (0) | 2023.04.20 |
[네트워크] HTTP/2 (0) | 2023.04.18 |
[네트워크] OSI 7 Layer (1) | 2023.04.18 |