[BE] Proxy, Forward Proxy, Reverse Proxy

홍종훈·2023년 8월 5일
0

BE

목록 보기
3/9

NginX를 API-Gateway로 하여금 서비스를 분리하는 과정에서 Proxy에 대해 알아야 했다. 이전에 사용했던 Proxy는 http에서 https로 요청을 보낼 때, http요청을 https 프록시 서버를 통해 우회하여 CORS오류를 해결했던 적이 있다. 하지만 Proxy가 어떠한 역할을 하는지, NginX가 Reverse Proxy의 역할로 어떠한 기능을 하는지 잘 모르기때문에 알아봤다.

1. Proxy란?

프록시(Proxy)는 일반적으로 컴퓨터 네트워크에서 다른 서버나 프로그램을 대신하여 동작하는 컴퓨터, 시스템, 프로그램 등을 가리킨다. 원래 '프록시'라는 용어는 대리인이나 대신이라는 뜻을 가지며, 네트워크에서도 비슷한 의미로 사용된다.

프록시 서버는 클라이언트와 인터넷 사이에 위치한다. 클라이언트는 웹 사이트에 직접 접속하는 대신 프록시 서버를 거쳐 인터넷에 접속하게 된다. 클라이언트의 요청은 먼저 프록시 서버에 도달하고, 프록시 서버가 이 요청을 인터넷에 전달한다. 그 후 인터넷의 응답은 프록시 서버를 거쳐 클라이언트에게 전달된다.

프록시 서버는 다음과 같은 여러 가지 용도로 사용된다:

1) 보안: 프록시 서버는 클라이언트의 실제 IP 주소를 숨김으로써, 외부 공격자로부터 클라이언트를 보호하는 역할을 한다.

2) 애너니미티(익명성): 프록시 서버를 사용하면, 클라이언트의 실제 IP 주소가 아닌 프록시 서버의 IP 주소가 인터넷에 노출되므로 클라이언트의 위치나 신원을 숨길 수 있다.

3) 캐싱: 프록시 서버는 자주 방문하는 웹 사이트의 정보를 캐시에 저장한다. 이를 통해 인터넷 트래픽을 줄이고, 웹 페이지 로딩 시간을 단축시킨다.

4) 콘텐츠 필터링: 프록시 서버는 특정 웹사이트 또는 웹페이지에 대한 접근을 제어할 수 있다. 이를 통해 사용자가 접근하는 인터넷 콘텐츠를 관리하고, 부적절한 콘텐츠로부터 사용자를 보호할 수 있다.

5) 지역 제한 우회: 일부 웹 사이트는 특정 지역에서만 접근을 허용하거나, 특정 지역을 차단하기도 한다. 프록시 서버를 사용하면 이러한 지역 제한을 우회할 수 있다.

따라서, 프록시는 사용자와 인터넷 사이의 중개자 역할을 하며, 보안, 익명성, 캐싱, 콘텐츠 필터링 등의 기능을 제공한다.

1-1. Forward Proxy


출처 : www.imperva.com

일반적으로 프록시라고하면 포워드 프록시이다.

포워드 프록시는 클라이언트와 인터넷 사이에 위치하는 프록시 서버를 의미한다. 클라이언트 요청은 먼저 프록시 서버를 거쳐 목적지 서버로 전달되며, 응답 역시 프록시 서버를 거쳐 클라이언트에게 돌아간다.

포워드 프록시의 주요 목적은 다음과 같습니다:

1) 보안: 클라이언트의 실제 IP 주소를 숨겨 외부 공격으로부터 보호한다.

2) 애너니미티: 클라이언트의 실제 위치를 숨겨 웹 사이트 접근을 제한하는 지역 제한을 우회할 수 있다.

3) 캐싱: 자주 사용하는 웹 페이지를 캐싱하여, 클라이언트의 요청을 더 빠르게 처리할 수 있다.

1-2. Reverse Proxy


출처 : www.imperva.com

반면에, 리버스 프록시는 클라이언트와 서버 사이에 위치한다. 클라이언트는 요청을 프록시에게 보내고, 프록시는 이를 서버에게 전달한 후, 서버의 응답을 다시 클라이언트에게 반환한다. 클라이언트는 프록시가 요청을 서버에게 직접 보내는 것으로 인식하며, 실제로 어떤 서버가 응답을 처리했는지 알지 못한다.

리버스 프록시의 주요 목적은 다음과 같다:

1) 로드 밸런싱: 여러 서버에 요청을 분산시켜 부하를 분산하고, 서버의 성능을 향상시킨다.

2) 보안: 서버의 실제 IP 주소와 위치를 숨겨 외부 공격으로부터 보호한다.

3) SSL 터미네이션: 리버스 프록시가 SSL 연결을 처리하고, 내부 네트워크에서는 보안이 필요 없는 HTTP 트래픽을 처리할 수 있게 한다.

4) 캐싱: 자주 사용하는 웹 페이지를 캐싱하여 클라이언트의 요청을 더 빠르게 처리할 수 있다.

따라서 포워드 프록시와 리버스 프록시 모두 보안과 캐싱 측면에서 유사한 기능을 제공하지만, 주로 서버와 클라이언트 중 어느 쪽에 초점을 둔 것인지에 따라 역할이 달라진다. 포워드 프록시는 클라이언트 중심적이며, 리버스 프록시는 서버 중심적이다.

NginX를 Reverse Proxy로 사용하여 API Gateway의 역할을 수행하게 하면, 서로 다른 프레임워크로 구현된 서비스들이나 다른 API 쿼리 언어(Restful API 또는 GraphQL API)를 사용하는 서비스들에 대해 클라이언트가 일관적으로 요청하고 응답을 받을 수 있을 것이다.

profile
Search Engineer

0개의 댓글