728x90

 

프록시(Proxy)는 대신해준다는 뜻이다. 

 

프록시는 여러 곳에서 쓰이는데, 디자인 패턴 중에도 프록시 패턴이 있고, 자바스크립트에서도 프록시 객체가 쓰인다. 

 

오늘 알아볼 포워드 프록시(Forward Proxy)와 리버스 프록시(Reverse Proxy)는 프록시 서버다. 

 

프록시 서버는 클라이언트나 서버를 대신해 인터넷과 연결한다. 

 

프록시의 위치에 따라 포워드 프록시와 리버스 프록시로 구별되기도 하고, 

사용하는 프로토콜에 따라 HTTP 프록시, SOCKS 프록시 등으로 구분하기도 한다. 

 

HTTP 프록시는 일반적으로 HTTP와 HTTPS 프로토콜들을 연결한다. 

 

SOCKS 프록시는 Socket Secure인데 클라이언트와 네트워크가 패킷을 교환할 때, FTP, HTTP, SMTP 등의 여러 프로토콜을 받을 수 있다. 

 

포워드 프록시(Forward Proxy)

 

포워드 프록시는 클라이언트, 즉, 사용자들을 대신해 인터넷과 연결한다. 

 

Forward Proxy

 

좀 더 와닿게 설명하자면, 

웹브라우저나 토렌트 같은 곳에 프록시를 설정해주면 그 프록시를 통해서 데이터를 주고 받는다

 

즉, 포워드 프록시란 '목적지에 직접 접근하지 않고 프록시를 통해 데이터를 주고 받기 위해 사용하는 프록시'이다. 

 

아이패드나 아이폰은 와이파이 연결 정보에서 자체적으로 포워드 프록시 정보를 설정할 수 있도록 제공한다고 한다. 

 

만약, 아이폰에서 포워드 프록시를 설정한 뒤 인터넷을 사용한다면, 

아이폰이 와이파이를 통해 직접 외부 서버에 데이터를 요청하는 것이 아니라, 

포워드 프록시로부터 간접적으로 원하는 서버의 데이터를 받아오게 된다. 

 

 

프록시 서버는 네트워크 계층의 여러 곳에 존재할 수 있다. 

 

인트라넷을 묶어서 프록시를 통해 인터넷과 연결시킬 수도 있고, 여러 유저들이 프록시 서버를 이용해 인터넷에 접속할 수도 있다. 

 

포워드 프록시를 이용해서 얻는 이점은 다음과 같다. 

 

속도

프록시 서버는 여러 사용자들의 요청을 캐싱한다. 

초기에는 캐싱으로 인한 속도 향상을 기대하고 프록시 서버를 사용했지만, 

집집마다 초고속 인터넷이 되는 요즘 시대에 큰 이점이라고 하기는 어렵지만.... 초기에는 이점이었다!

 

검열

초등학교 컴퓨터실에서 특정 사이트에 들어가려고 하면 막혀 있는 경우가 있다.

프록시 서버를 사용했기 떄문이다. 

 

또, 회사 컴퓨터는 외부 이메일을 막아 보안 기능으로 활용한다. 

 

이것이 가능한 것은 프록시가 필터 기능트랜스코드를 할 수 있기 때문이다. 

 

프록시 서버는 사용자를 검열, 보안, 감시할 수 있다. 

 

익명성

프록시는 사용자의 요청을 대신 처리하기 때문에 IP 우회가 가능하다. 

 

IP 주소를 숨기긴 하지만, 데이터를 암호화하지 않는다. (VPN은 한다.)

 

VPN

: Virtual Private Network, 가상 사설망이다. 프록시에 보안을 더했다고 보면 된다.

vpn은 망 내에서 일어나는 모든 과정을 암호화한다. 그래서 일반 프록시보다는 훨씬 안전하다. 

(물론 vpn 운영자가 나쁜 마음을 먹을 경우는 결코 안전하다고 말할 수 없다)

 

 

리버스 프록시(Reverse Proxy) 

 

리버스 프록시는 포워드 프록시와는 반대로 서버를 대신해 인터넷과 연결한다. 

 

Reverse Proxy

 

즉, 다른 서버의 정보를 프록시를 통해 받아오는 부류의 프록시를 뜻한다.

 

단, 포워드 프록시와는 다르게 사용자가 요청하는 Endpoint(서버 요청 url)는 접근하고자 하는 최종 목적지 서버가 아닌, 리버스 프록시가 된다. 

 

보통 HA(High Availability)를 위한 Load Balancing이나 보안상의 이유로 쓰이는 것이 일반적인데, 

리버스 프록시의 back-end 단에 여러 개의 서비스 서버를 배치하고, 

사용자의 요청을 리버스 프록시를 통해 분산할 때 유용하게 쓰일 수 있기 때문이다. 

 

Load Balancing

 

보안 상의 이유로 직접 내부망 서버들, 즉 back-end 단의 서버에 접근하는 것을 

원하지 않을 때 DMZ와 같은 네트워크 zone에 리버스 프록시를 구성함으로써

간접적으로 서버에 접근하는 용도로 쓰일 수도 있다. 

 

대표적인 리버스 프록시로는 nginx, apache 웹서버 등이 있다. 

haproxy도 비슷한 의미의 리버스 프록시라고 볼 수 있으며, 

도커 엔진이 자체적으로 제공하고 있는 도커 스윙 모드 서비스의 Virtual IPs를 이용한 요청 분산도 같은 맥락이라고 볼 수 있다. 

 

리버스 프록시를 이용해 얻는 이점은 아래와 같다.

 

검열

포워드 프록시와 마찬가지로 필터링 기능을 이용해 검열이 가능하다.

유저의 IP를 확인하고 접속을 허용한다. 

 

분산부하

큰 서비스들은 서버를 여러 대 사용한다. 

이때, 리버스 프록시는 쏟아지는 트래픽을 여러 대의 서버로 분산해주는 '로드밸런싱'을 해준다. 

 

 

 

 

 

 

 

728x90

'CS > 네트워크' 카테고리의 다른 글

HTTPS 동작 원리  (0) 2021.06.18
HTTPS (대칭키, 공개키, CA)  (0) 2021.06.18
HTTP 2.0과 특징  (0) 2021.06.11
로드밸런싱  (0) 2021.06.11
JWT - JSON Web Token  (0) 2021.06.04

+ Recent posts