Proxy
프록시 서버는 Client가 자신을 통해서 다른 Network 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. Server와 Client 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 '프록시 서버' 라고 한다.
프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 Cache를 이용하여 저장해 둔다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 된다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다.
Client를 프록시 서버를 'Server'로 인식하고, Server는 프록시 서버를 'Client' 로 인식하게 된다.
- 익명으로 컴퓨터를 유지. (보안성)
- 캐시를 사용하여 리소스로의 접근을 빠르게 함.
- 웹 프록시는 웹 서버로부터 웹 페이지를 캐시로 저장하는 데 흔히 쓰인다.
- 보안 및 통제
- 역 ip 추적 방지
- 데이터 유출 보호
프록시 서버는 서버의 위치에 따라 크게 두 가지로 나뉘어지게 된다.
1. Forward Proxy
일반적으로 프록시라고 말하면 포워드 프록시를 의미한다.
클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거쳐서 요청된다. 이 경우 서버에서 받는 IP는 클라이언트의 IP가 아닌 프록시 서버의 IP 이기 때문에 서버는 클라이언트가 누군 지 알 수 없다. 즉, 서버에게 클라이언트가 누구인지 감춰주는 역할을 한다.
Forward Proxy의 특징과 역할
(1) Cache
첫 번째 요청 이후부터는 동일한 요청이 들어올 경우, 프록시 서버에 캐싱된 내용을 전달해줌으로써 성능을 향상시킨다. 웹 서비스에서 중복되는 요청을 매번 동일한 파일의 응답을 처리할 필요 없이 캐싱된 내용을 전달해줌으로써 자원 낭비를 줄이고 웹 서버의 부하를 감소시킬 것이다.
(2) IP 우회
클라이언트 측에서 프록시 서버를 거쳐 웹 서비스를 이용할 경우, 서버 측에서는 요청을 받을 때 클라이언트의 IP가 아닌 프록시의 IP를 전달 받게 된다. 즉, 서버 측에 클라이언트의 정보를 숨길 수 있게 되는 것이다.
(3) 제한
보안이 중요한 사내망에서 정해진 사이트에만 연결 할 수 있도록 설정하는 등 웹 사용 환경을 제한할 수 있다.
2. Reverse Proxy
컴퓨터 네트워크에서 Client를 대신해서 한 대 이상의 서버로부터 자원을 추출해주는 프록시 서버의 일종이다. 그런 다음 이러한 자원들이 마치 웹 서버 자체에서 기원한 것처럼 해당 클라이언트로 반환된다. 관련 Client들을 위해 임의의 서버에 접속하는 중간 매개체인 Forward Proxy와는 반대로, Reverse Proxy는 관련 서버들을 위해 임의의 클라이언트가 해당 서버에 접속하는 중간 매개체가 된다.
즉, Client가 Server에 요청할 때 Reverse Proxy를 호출하고, Reverse Proxy가 Server로부터 응답을 전달 받아 다시 Client에게 전송하는 역할이다. 이 때, Client가 Application Server를 직접 호출하는 것이 아니라 Proxy Server를 통해 호출하기 때문에 Reverse Proxy는 Application Server를 감추는 역할을 한다.
또한, 하나의 IP로 다수의 웹 서비스를 수행할 수 있다는 장점도 있다. 이러한 Proxy 기능은 대다수의 HTTP 프레임워크에서 제공한다. (Apache,NginX등) 널리 보급된 웹 서버들은 리버스 프록스 기능을 사용하는 일이 잦으며 취약한 HTTP 기능의 애플리케이션 프레임워크를 보호한다.
Reverse Proxy의 특징과 역할
(1) Load Balancing
Reverse Proxy 뒤에 여러 개의 WAS를 둠으로써, 사용자 요청을 분산할 수 있다. End-Point 마다 호출 서버를 설정할 수 있어 역할에 따라 서버의 트래픽을 분산할 수도 있다.
(2) 실제 Server로의 직접적인 접근 차단
Client가 실제 Server를 직접 호출하는 것이 아닌 Proxy Server를 통해 호출한다. 외부에 노출되는 IP는 Proxy Server의 Public IP이며, 실제 동작하는 Server는 Private IP를 할당 받아 동작한다. 따라서 Client가 직접적으로 Server의 IP를 알 수 없기 때문에 보안적으로 좋다.
(3) 보안
보안 상의 이유로 서버에 직접 접근하는 것을 막기 위해 DMZ 같은 네트워크에 Reverse Proxy를 구성하여 접근하도록 한다.
※ CDN 또한 Reverse Proxy로 동작하는 캐시 서버일 뿐이다. CDN을 연동하면 DDOS 공격을 효과적으로 방어하고 서비스를 빠르고 안정적으로 제공할 수 있다.
Reference
- https://sujinhope.github.io/2021/06/13/Network-%ED%94%84%EB%A1%9D%EC%8B%9C(Proxy)%EB%9E%80,-Forward-Proxy%EC%99%80-Reverse-Proxy.html
- https://milkye.tistory.com/202
- https://brownbears.tistory.com/191
- https://m.blog.naver.com/wonjinho81/222091281633
'Web Server' 카테고리의 다른 글
[WEB] NginX - Tomcat 연동 (1) | 2022.08.12 |
---|---|
공부 정리 (0) | 2021.12.06 |
[WEB] HTTP 1.0 과 HTTP 1.1 그리고 HTTP 2.0 (0) | 2021.12.03 |
[WEB] DNS (0) | 2021.12.01 |
[WEB] SSL / TLS (0) | 2021.11.27 |