Proxy & NginX
일반적으로 클라이언트가 포트를 통해서 서버로 바로 연결되는 것은 보안상 위험성이 높다.
지금까지 공부하면서 만든 서버는 http 프로토콜 포트 80번을 설정해두고 클라이언트도 똑같은 80번 포트를 타고 들어오게끔 만들었지만 실제 상용화 서비스에서는 유저가 서버 소스에 직접 접근하도록 하지 않는다.
이때 사용할 수 있는 것이 바로 Proxy 서버이다.
프록시 서버란, 서버와 클라이언트 사이에서 대리로 통신을 시켜주는 서버이다. 아래 그림에서 Alice가 유저 그리고 Bob이 본 서버이고 그들을 proxy가 사이에서 통신을 시켜주고 있는 셈이다.
프록시 서버를 사용할 때의 여러 장점을 알아보자.
- 우선, 위에서 언급한 것처럼 보안상 더욱 안전하다.
- 그리고 프록시 서버를 이용하면 보다 빠르게 페이지에 접속할 수 있다. 실제로 전 세계에는 광케이블이 연결되어 서버가 다른 나라에 있더라도 유저가 해당 서버에 접근할 수 있다. 하지만 하드웨어적인 한계로 가까운 거리보단 속도가 느릴 수밖에 없다. 이때 프록시 서버를 한국에 두면 캐시 데이터(실제 데이터의 복사본)를 프록시서버에 저장해 둘 수 있다. 지속적으로 사용하는 데이터가 있을 때, 가장 처음에만 본 서버에서 데이터를 가져오고 그 후에는 프록시 서버에 캐시 데이터를 저장해서 필요할 때마다 본 서버에 접속할 필요없이 프록시 서버에서 데이터를 호출해 오는 것이다.
- 또한 본 서버에 직접적으로 연결되는 트래픽을 감소시켜 병목현상을 줄일 수 있다.
그렇다면 이러한 프록시 서버를 어떻게 구성할 수 있을까?
바로 NginX를 이용해서 간편하게 구성할 수 있다.
NginX란, 웹 서버 소프트웨어 즉, 서버를 만들 수 있는 소프트웨어이다. NginX 사용 이전에는 PHP 언어를 이용한 Apache 환경으로 서버를 구성했다. 하지만 아파치는 다소 무겁고 느리다는 단점이 있다. 이를 극복하기 위해 러시아의 이고르 시쇼브라는 사람이 만든 소프트웨어가 바로 NginX이다. NginX는 아파치보다 훨씬 가볍고 빠르다는 장점이 있지만 본 소프트웨어를 사용하기 위해 설정해야 하는 것들이 어렵고 복잡하다.
하지만 이전 도커 관련 포스팅에서 설명한 것처럼 NginX 환경설정이 이미 완료되어 있는 도커 컨테이너 이미지를 활용하면 보다 간편하게 프록시 서버를 생성할 수 있다! (일반적으로 NginX는 일반 API 서버 구동용으로는 잘 사용하지 않고 proxy 서버 생성에 많이 사용된다)
<참고>