서버를 구축해보자 2 - 프록시 (Proxy)
목차
- 로드밸런서
- 프록시(포워드/리버스)
- NginX
- OpenVidu
- SFU(Selective forwarding Unit)
- MCU(Multipoint Control Unit)
- HTTPS 종결
- Signaling
분명 게임 개발자였던 것 같은데, 서버를 만지게 된 어느 중생의 도전기 2
지난번 포스팅에서 로드밸런서에 대해 간단히 조사해 보았지만 본인은 아직도 서버를 구축하는 방법은 감이 잘 안 온다.
클라이언트 -> 로드밸런서 -> 리버스 프록시 -> 다른 서버 구성요소
클라이언트 -> 리버스 프록시 -> 로드밸런서 -> 다른 서버 구성요소
대충 이런 식으로 클라이언트와 서버 사이에서 트래픽을 조절하는 용도로 로드밸런서와 리버스 프록시를 사용한다는 이야기를 들었으나, 사실 로드밸런서에 대한 개념도 아리까리한 상태라, 리버스 프록시까지 얹히면 더 모르겠다!!!
역시 공부하는 수밖에 없는 법이다.
그런 고로 오늘은 리버스 프록시에 대해 조사하고 공부해보겠다.
1. 프록시 (Proxy)
프록시 서버(Proxy server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부른다.
- 위키피디아
위키피디아에서는 프록시를 위와 같이 설명한다. A -> B로 직접 연결하는 대신에, A -> Proxy -> B와 같이 연결의 중간에 중계기로 들어가는 녀석이 프록시다. 글로 설명을 들으니 잘 모르겠다. 내 인생에 이런 걸 접해볼 일이 있었나?라고 생각했지만 사실 프록시는 우리 주위에서 흔히 볼 수 있었다.
한국의 사람이라면 누구나 warning.or.kr을 우회하기 위해 온갖 수단을 동원해보았을 테다. 그 방법으로 Virtual Private Network; VPN을 사용하는 경우도 많았지만, 알게 모르게 프록시를 사용한 경우도 많다. 클라이언트 -> 프록시 -> 차단당한 사이트로 이어지는 과정에서, 클라이언트의 IP 주소를 자체 IP 주소로 바꾸면서 우회할 수 있는 모양이다. 1
아무튼 간에 프록시의 핵심 개념은 "대리"의 개념이다. 중간에서 대신 전달해 주고, 전달받는 역할을 하는 게 프록시. 이러한 대리의 역할을 수행한다는 목적이, 트래픽을 분산하는 것이 목적인 로드밸런서와의 가장 큰 차이점이라 생각된다.
앞에서 프록시가 IP 우회 용도로 사용할 수 있다 하였는데, 이것은 모든 프록시가 아니라 포워드 프록시만이 가능하다. 프록시는 역할과 설치 위치에 따라 포워드 프록시와 리버스 프록시로 나누어진단다. 포워드 프록시? 리버스 프록시? 1도 모르지만, 당장 필요하니 공부해야지.
지금부터 둘 사이에 어떤 차이점이 존재하고, 이번 프로젝트에서 어떤 프록시가 필요한지 알기 위해 포워드 프록시(정방향 프록시)와, 리버스 프록시(역방향 프록시)에 대해 알아볼 것이다.
2. 포워드 프록시 (Foward Proxy)
사실 이번 프로젝트랑 상관없을 것 같아서 포워드 프록시에 대한 내용을 제껴버릴까 생각도 했는데, 이왕 공부하는 거 한 번에 제대로 해보자는 생각으로 같이 조사하였다.
보통 프록시를 이야기하면 포워드 프록시를 이야기한다고 한다.
개발 배경을 상세하게는 모르겠으나, 인터넷이 느린 지역에서는 건물 내의 내부 망 연결 속도는 빠른데 외부 망과의 연결 속도가 느려(트래픽이 극히 제한되어 있어) 문제가 된다고 한다. 그래서 내부에 자주 들어오는 요청에 대한 일종의 캐시 서버를 구축한다는 느낌으로 시작된 듯하다.
- 아무튼간에, 포워드 프록시의 경우 위 그림에서 보이듯이 클라이언트 바로 뒤에 위치하게 된다.
- 이러한 포워드 프록시의 장점은 아래와 같은 것들이 있다.
- 자주 요청되는 컨텐츠를 캐싱하는 것으로, 클라이언트 측에서는 빠르게 요청에 대한 응답을 반환받을 수 있게 되고, 서버는 동일한 요청이 줄어드니 부하가 줄어들게 된다.
- 서버에 프록시 서버의 IP가 노출되게 되어, 클라이언트의 IP를 남기지 않고 익명으로 활동할 수 있게끔 한다.
3. 리버스 프록시 (Reverse Proxy)
포워드 프록시와 다르게 리버스 프록시는 서버의 앞단에 위치한다. 따라서, 클라이언트의 요청은 인터넷망을 통해 서버로 직접적으로 전달되지 않고, 프록시 서버로 전달된다. 프록시 서버는 서버단에 존재하는 서버 중 누가 전달받은 클라이언트의 요청을 처리할지 결정한다.
이렇게 구성하면 어떤 장점이 존재할까?
- 앞에서 설명했던 것처럼 특정 트래픽을 적절한 서버로 분산시키는 역할을 수행할 수 있다. <- 로드밸런싱
- 클라이언트가 프록시 서버의 IP만 알 수 있기 때문에, 클라이언트가 실제 서버에 접근하는 것을 차단하는 효과 또한 가지고 있다. <- 서버 보안
- 포워드 프록시와 마찬가지로 자주 사용되는 데이터를 확보한 뒤 캐싱하는 것으로 성능 향상도 꾀할 수 있다. <- 캐싱
- 또한, 하나의 IP를 사용하는 것으로 웹 서버를 동작시킬 수 있다. 이는 IPv4의 한정된 수량, 비용, 관리 용이성 측면에서의 장점을 갖는다.
여담으로, 하나의 프록시로 포워드 프록시와 리버스 프록시의 역할을 모두 수행할 수 있다는 듯하다. 그러나, 이번 프로젝트에서는 리버스 프록시만 필요하니, 포워드 프록시는 현 단계에서 고려하지 않아도 될 듯 하다.
참고자료
[Proxy] Forward Proxy와 Reverse Proxy
지난 게시글에서, 웹 서버와 WAS에 대해 알아봤다. 웹 서버와 WAS Web Server와 WAS(Web Application Server)에 대해 알아보도록 하자. 이들을 설명하기 앞서, 이 둘의 차이를 이해하기 위해 정적 페이지와 동
xxeol.tistory.com
https://jcdgods.tistory.com/322
[웹 서버] Proxy 서버와 Forward, Reverse 프록시
1. 프록시 서버란 무엇인가? Proxy는 대리, 대리인 의미를 가진 단어이다. 이 처럼 단어 의미에서 짐작해볼 수 있듯, 서비스를 제공하는 서버 대신 무언가를 수행하는 서버이다. 프록시 서버의 주
it-trip.com
https://kth990303.tistory.com/355
[Network] 프록시(Proxy)와 로드 밸런싱(Load Balancing)
HTTP를 HTTPS로 변환하는 과정을 진행하다보면 NGinx라는 것을 만나게 되고, NGinx는 리버스 프록시, 로드밸런싱 기능을 포함하고 있는 웹 서버 오픈소스임을 알게 된다. 리버스 프록시? 로드밸런싱?
kth990303.tistory.com
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%EC%84%9C%EB%B2%84
프록시 서버 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 프록시 서버 역할을 하는 세 번째 컴퓨터를 통해 연결된 두 컴퓨터 간의 통신이다. 밥(Bob)은 프록시에 대해서만 알고 앨리스(Alice)를 직접 식별하거나 연락할 수
ko.wikipedia.org
https://en.wikipedia.org/wiki/Proxy_server
Proxy server - Wikipedia
From Wikipedia, the free encyclopedia Computer server that makes and receives requests on behalf of a user Communication between two computers connected through a third computer acting as a proxy server. This can protect Alice's privacy, as Bob only knows
en.wikipedia.org
https://aws.amazon.com/ko/compare/the-difference-between-proxy-and-vpn/
프록시와 VPN - 중개 기술 간의 차이점 - AWS
프록시 서버와 가상 프라이빗 네트워크(VPN)는 조직의 내부 기업 네트워크와 공용 인터넷을 중개하는 기술입니다. 조직에서는 모든 수신 및 발신 네트워크 트래픽을 프록시 서버, VPN 또는 둘 다
aws.amazon.com
https://m.blog.naver.com/malloc813/220313394623
프록시 사용자의 IP를 알아내는 방법
프록시를 사용하여도 그 사용자의 IP가 누군지, 어떤 프록시 툴을 사용하고 있는지 알 수 있는 방법이 있...
blog.naver.com
[DevOps] Reverse Proxy vs Load Balancer, 리버스 프록시 vs 로드 벨런서
서버 아키텍쳐를 공부하던 중에 비슷한 두 개의 개념을 접하게 되었습니다. 리버스 프록시와 로드 밸런서. 얼핏 봐서는 두 개념이 비슷해보이고 명확하게 구분이 안되서 각각에 대해서 정리하
ssungkang.tistory.com
- 그러나 프록시를 사용하는 것이 반드시 안전하지는 않은 듯 하다. [본문으로]