Proxy 란?
Proxy 는 ‘대리', '대신' 이라는 뜻을 가진다.
주로 보안상의 문제를 방지하기 위해, 직접 통신하지 않고 중계자를 거친다는 개념이다.
이 때 중계의 기능을 하는 것이 ‘프록시 서버' 이다.
클라이언트와 서버 사이에 프록시 서버가 '중계'를 할 때,
클라이언트는 프록시 서버를 ‘서버’ 라고 인식하고, 서버는 프록시 서버를 ‘클라이언트’ 처럼 여기게 된다.
즉,
프록시 서버가 클라이언트의 Request 와 서버의 Response 를 연결해주기 때문에
(의미적으로)
클라이언트 입장에서는 서버를 가리고 프록시 서버가 서있는 것이고,
서버 입장에서는 클라가 가려지고 대신 프록시 서버가 있는 것이다.
프록시 서버는 서버의 위치에 따라 [Forward Proxy] 와 [Reverse Proxy] 로 나뉜다.
<프록시 서버를 사용하는 이유>
1. 시간 절약 [Foward Proxy]
클라이언트가 프록시 서버에 요청한 내용을 프록시 서버에서 캐시로 저장해 두면,
나중에 다시 데이터를 요청할 때 또다시 데이터를 요청하지 않고 캐시된 데이터를 사용하면 되므로
전송 시간을 절약할 수 있다.
이렇게 캐싱 기능을 제공하면서 동시에 특정 사이트는 접근 불가능하도록 제한을 걸 수도 있다.
{ 클라 <-> 프록시서버 --- 서버 } 의 위치에 있는,
위의 개념을 사용하는 프록시 서버를 [Forward Proxy] 라고 한다.
클라가 Request 를 전달하면 프록시 서버가 목적 사이트의 내용을 받아와서 전달을 ‘대신’ 해주는 것이다.
2. 보안 [Reverse Proxy]
클라이언트가 바로 서버에 데이터를 요청하여 받아볼 수도 있지만,
그러면 중요한 데이터가 있는 DB 가 ‘최전방’에 노출될 수 있다는 위험이 존재한다.
따라서 중간에 프록시 서버를 두고 내부망을 보호하는 역할을 담당하게 하는 것이다.
즉, 클라가 프록시 서버에 데이터를 요청하면 프록시 서버는 실제 내부 서버에서 데이터를 받아와 클라에서 전달해주는 것!
{ 클라 --- 프록시서버 <-> 서버 } 의 위치에 있는, 이 개념이 바로 [Reverse Proxy] 이다.
따라서 프록시 서버를 내 컴퓨터 (127.0.0.1) 로 하면,
웹의 Request 가 서버로 바로 가지 않고 내 컴퓨터를 거쳐서 간다는 것이다.
이걸 이용하여 중간 내용을 가로채서 내가 원하는 내용을 담은 Request 를 서버에 보내는 방법을 사용할 수 있다.
'Develop > Server' 카테고리의 다른 글
블로킹(Blocking)과 논블로킹(NonBlocking) 그리고 동기 I/O(Synchronous)와 비동기I/O(Asynchronous) (0) | 2022.05.26 |
---|
최근댓글