Jungle

[TIL] 리버스 프록시(Reverse Proxy) 개념

손가든 2023. 12. 30. 21:44

백엔드와 프론트엔드, DB를 각각 어떻게 서버로 연결할지에 대한 개요를 짜다가

 

예전 프로젝트 때, 개발에 진심이셨던(?) 컴퓨터 공학과 박사님이 추천해준 방식인

 

프론트서버와 백엔드 서버를 NGINX 리버스 프록시에 넣어 연결하는 방식이 생각났다.

 

 

그때는 리버스 프록시에 대한 개념이 너무 어려워서 그냥 DB 백,프론트 서버를 한꺼번에 한 서버에 넣어 돌렸었는데

 

이번에 제대로 한번 공부해서 적용해보자고 다짐하며 리버스 프록시에 대한 개념에 대해 공부하게 되었다.

 

 

그래서 오늘은 Nginx의 리버스 프록시 개념과 그 사용법에 대해 공부해보고 이에 관해 포스팅해보겠다.


 

리버스 프록시 란?

리버스 프록시란 클라이언트 요청을 대신 받아 내부 서버로 전달해주는 방식을 말한다.

 

이 프록시는 대리자의 의미를 가지는데, 정보를 대신 전달해주는 주체라고 생각하면 된다.

 

만약 이 프록시 서버가 없다면 어떻게 될까?

 

웹서버를 열어서 운영하고 있는데 갑자기 사용자가 많아 트래픽이 발생하여 서버가 다운될 수 있고,

 

웹서버가 그대로 노출되는 것 자체가 보안적으로 위험하다.

 

 

그런데 만약 nginx를 사용하여 리버스 프록시 서버로 처리한다면

 

로드 밸런싱을 쉽게 적용하여 분산처리를 통해 부하를 줄일 수 있고,

 

직접적인 웹서버의 노출을 피할수 있으며

 

추가적으로 웹 서버의 SSL 인증도 적용할 수 있다.

더보기

SSL이란 무엇인가?

 

SSL(Secure Sockets Layer)은 암호화 기반의 인터넷 보안 프로토콜이다.

 

이는 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 개발되었다.

 

현재 사용중인 TLS 암호화의 전신이다.

 

SSL/TLS를 사용하는 웹사이트의 URL은 HTTP가 아닌 "HTTPS"로 되어있다.

 

 

 

SSL/TLS는 높은 수준의 개인정보 보호를 제공하기 위해 웹에서 전송되는 데이터를 암호화한다.

 

이 때문에 서버가 가지고 있는 개인 키로 해독하지 않는 이상 중간에 가로채려는 자는 데이터를 해독할 수 없다.

 

Cloudflare에서 모든 기업에 무료 SSL 인증서를 제공하므로 클릭 몇번으로 SSL을 활성화하는 게 가능하니

 

필요하다면 해당 정보를 찾아보면 도움이 될 것이다. 

 

https://www.cloudflare.com/ko-kr/application-services/products/ssl/

 

무료 SSL 및 TLS

최초로 무료 SSL 보호를 제공하는 Cloudflare와 함께 안전한 웹 트래픽 환경을 구축하세요.

www.cloudflare.com

 

 

 

리버스 프록시의 장점 

 

리버스 프록시의 대표적인 장점은 다음과 같다.

 

- 로드 밸런싱

 

Nginx는 클라이언트의 요청을 프록시 서버에서 분산하는 로드 밸런싱을 수행하여 성능, 확장성 및 신뢰성을 향상시킬 수 있다.

 

 

- 캐싱

 

Nginx를 리버스 프록시로 사용하면 미리 렌더링된 버전의 페이지를 캐싱할 수 있다.

 

만약 캐싱된 요청이 들어온다면 매번 동일한 콘텐츠를 작업할 필요가 없이

 

캐싱된 데이터를 클라이언트에게 곧바로 응답하여 페이지 로드 시간을 단축할 수 있다.

 

 

- SSL 터미네이션

 

SSL로 암호화된 클라이언트의 요청은 원래 요청을 처리하는 백엔드 서버에서 해독하는 작업이 필요하지만,

 

이를 NGINX에서 수행함으로써 해독 책임을 중간 서버에 전가하고 비 암호화된 데이터를 가공하는 것에만 신경쓰면 된다.

 

 

- 압축

 

프록시 서버가 압축된 응답을 보내지 않는 경우 클라이언트로 보내기 전에 응답을 압축하도록 Nginx를 구성할 수 있다.

 

 

- DDoS 공격 완화

 

수신 요청과 단일 IP 주소 당 연결 수를 일반 사용자에게 제한할 수 있다. 또한 클라이언트 위치와 요청 헤더 값을 기준으로 액세스를 차단하거나 제한할 수 있다.

 

 

더보기

왜 Apache가 아닌 NginX를 선택할 것인가?

 

이벤트 방식인 Nginx는 프로세스/쓰레드 방식인 Apache에 비해 월등한 성능을 보이는 것으로 알려져 있다.

 

실제로 Static 파일들 CS,JSS,html의 경우엔 그 속도가 더욱 빠르다.