Hi, There!
안녕하세요, 바오밥입니다.
목차
- 개요
- 본문
개요
규모 있는 웹 서버 아키텍쳐를 구성하다 보면 빠질 수 없는 기술들이 있습니다.
바로 Forward Proxy, Reverse Proxy 입니다.
해당 기술들을 이미 숙지하고 있으나 다시 간단하게 정리해 보는 시간을 가져보도록 하겠습니다.
본문
프록시 서버는 무엇인가
프록시 서버란 서버와 클라이언트 사이에 있는 중계기로서 대리로 통신을 수행하는 기능을 갖춘 서버입니다.
그렇다면 왜 대리로 통신을 수행하는 걸까
클라이언트, 서버 간의 통신을 다이렉트로 하는 것이 아니라 중계기를 거쳐 통신한다면 아래와 같은 이점들을 얻을 수 있습니다.
- 클라이언트가 외부의 웹 서비스 접근 시의 익명성이 보장됩니다.
- 효과적인 트래픽 분산이 가능합니다.
- 서버가 불필요한 외부와의 연결을 할 필요가 없으며 외부와의 트래픽이 감소합니다.
- 내부에서 외부로 가는 액세스를 집중 관리 할 수 있어 보안성을 강화할 수 있습니다.
- 취득한 데이터를 캐시로 활용할 수 있어 캐시 서버로 사용할 수 있습니다.
이러한 프록시 서버에는 두 가지 종류로 나뉘게 됩니다.
바로 포워드 프록시 서버와 리버스 프록시 서버입니다.
포워드 프록시 서버란 무엇인가
포워드 프록시 서버를 이해하기 위해서는 클라이언트가 웹 서버에 접근하는 방식에 대해 먼저 이해해야 합니다.
클라이언트는 특정 웹 서비스에 접근하기 위해서 웹 서버에 html 문서를 요청하게 됩니다.
이때 클라이언트와 웹 서버 중간에 프록시 서버가 위치한 경우 웹 서버로 요청이 가는 것이 아니라 프록시 서버에게 갑니다.
요청을 전달받은 포워드 프록시 서버가 웹 서버를 대신하여 html 문서를 반환하며 웹 호스팅을 제공합니다.
포워드 프록시 서버는 캐싱 기능을 대부분 지원합니다.
즉 이미 요청 이력이 있는 클라이언트가 또 요청할 경우 캐시 안에 있는 정보를 바로 반환하게 됩니다.
이를 통해 원격 서버에 접속하여 데이터를 가져올 필요가 없게 되고 전송 시간을 절약할 수 있습니다.
따라서 불필요한 외부와의 통신이 줄어듬에 따라 보안성이 확보되고 네트워크 병목 현상 또한 방지할 수 있게 됩니다.
그리고 정해진 사이트만 연결하게 설정하는 등 클라이언트의 웹 서비스 사용 환경에 제한을 둘 수 있습니다.
리버스 프록시 서버란 무엇인가
포워드 프록시 서버와 마찬가지로 리버스 프록시 서버를 이해하기 위해서는 클라이언트가 웹 서버에 접근하는 방식에 대해 먼저 이해해야 합니다.
클라이언트는 특정 웹 서비스에 접근하기 위해서 웹 서버에 html 문서를 요청하게 됩니다.
리버스 프록시 서버는 해당 요청을 전달받아 이에 맞게 내부 서버에 데이터를 요청합니다.
반환받은 데이터를 클라이언트에게 전달합니다.
리버스 프록시 서버를 통해 프록시의 웹 서버가 털리더라도 내부망에 있는 DB 서버는 털리지 않는 보안성을 보장받을 수 있습니다.
특히 WAS와 DB 서버는 연결되어 있는 경우가 많기 때문에 서버 앞 단에 리버스 프록시 서버를 배치하고 실제 서비스는 내부망의 서버에서 서빙해야 합니다.
즉 프록시 서버만 내부에 있는 서비스 서버와 통신하게 해야하며 서비스는 프록시 서버가 대신하여 클라이언트에게 제공하는 방식으로 구성하는 것이 바람직합니다.
헷갈리는 포워드 프록시 서버와 리버스 프록시 서버
얼핏보면 두 서버의 역할이 비슷해 보입니다만, 서버의 위치를 생각해 보면 정확하게 이해가 가능할 것입니다.
포워드 프록시 서버는 클라이언트 앞 단에 프록시 서버를 배치하고 인터넷에 연결됩니다.
리버스 프록시 서버는 서버 앞 단인 DMZ 구간에 프록시 서버를 배치하고 인터넷에 연결됩니다.
정리하자면 포워드 프록시 서버는 사내의 클라이언트들을 위해 구성하는 프록시 서버이고
리버스 프록시 서버는 사내 내부망의 서버들을 위해 구성하는 프록시 서버입니다.
'Theory > Infrastructure & Network' 카테고리의 다른 글
웹 표준과 웹 접근성 (0) | 2021.07.30 |
---|---|
Broswer Rendering의 이해 (0) | 2021.07.28 |
Load Balancer의 이해 (0) | 2021.07.26 |
POP3와 IMAP의 차이 (0) | 2021.07.19 |
WAS와 Web Server의 차이점 (0) | 2021.07.14 |