“You just may be hacked when some yet-unknown buffer overflow is discovered. Not that couldn’t happen behind nginx, but somehow having a proxy in front makes me happy.”

Proxy
사용자의 요청을 대신하여 처리하는 대리인 중계기의 개념으로 서버와 클라이언트 사이에 위치하고 있으며 사용자가 외부 접근(WWW/FTP) 을 요청할 경우 사용자의 요청(Request) 을 대신한다. 이를 통해 직접적인 내부 서버로의 접근을 차단하며 간접적으로 한 단계를 추가해 보안성을 강화할 수 있는 등 여러 가지 이점이 있어 많이 사용된다.

프록시 서버 공통 기능
사용자(Client) 최초 페이지 접속 시 포워드 프록시(Forword Proxy) 는 이 페이지를 캐싱(임시 보관) 한다.
다음 요청 시 페이지가 동일할 경우 캐싱되있는 페이지를 그대로 응답한다. 즉 내부 서버(WAS) 에 부하를 줄여준다.
프록시 패턴
대상 객체(object) 에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴.
포워드 프록시(Forword Proxy) 서버
사용자 요청 시 내부 서버로 직접 요청하지 않고 프록시 서버를 한번 거쳐 프록시 서버가 내부 서버로 요청을 한다.
같은 망에 존재하는 사용자의 요청(Request) 을 받아 인터넷을 통해 외부 서버에서 데이터를 가져와 사용자(Client) 에게 응답(Response) 한다. 예를 들어 사용자(Client) 가 example.com 서버에 요청(Request) 을 하면 포워드 프록시(Forward Proxy) 서버는 이 요청을 대신해 example.com 서버에 대신 요청(Request) 하고 응답(Response) 을 받아 사용자(Client) 에게 응답(Response) 한다. 내부 서버에 직접 요청하는 게 아니라 프록시 서버를 통해 응답을 받으므로 사용자는 내부 서버에 대한 정보를 알 수 없다.
리버스 프록시(Reverse Proxy) 서버
내부 서버 앞에 위치하여 사용자의 요청이 들어오면 리버스 프록시(Reverse Proxy) 를 호출하고 리버스 프록시가 내부 서버로부터 응답을 전달받아 사용자에게 응답하는 역할을 한다. 포워드 프록시와 마찬가지로 사용자는 프록시 서버를 통해서 응답을 받으므로 내부 서버에 대한 정보를 알 수 없다.

장점
1. 보안
- 보통 내부 서버(WAS) 는 DBMS 데이터베이스 서버와 연결되어 있는데 내부 서버를 최전방에 두어 그대로 사용자에게 노출시킬 경우 내부 서버가 해킹당하면 연결되어 있는 DBMS 서버까지 공격받는 심각한 보안 문제가 발생한다. 이를 방지하기 위해 내부 서버 앞에 리버스 프록시 서버(NGINX) 를 설정한다면 서버에 정보를 숨길 수 있어 보안적인 측면에 장점이 있다.
2. SSL
내부 서버(WAS) 가 직접 클라이언트와 SSL 방식 즉 암호화 복호화를 하게 된다면 내부 서버에 비용이 많이 발생한다.
이 문제를 개선하기 위한 방법으로 프록시 서버가 활용되는데 들어오는 요청(Reqeust) 을 복호화하고 응답(Response) 을 암호화하여 내부 서버의 부하를 줄여줄 수 있다.
3. 로드밸런싱
서비스 운영 시 수백 수천만 건의 대용량 트래픽이 발생할 경우 로드밸런싱을 하게 되는데 이런 경우 리버스 프록시 서버를 내부 서버(WAS) 앞에 설정하여 대량의 트래픽을 내부 서버에 적절한 분배 알고리즘을 통해 효과적으로 분산시킬 수 있다.
포워드 프록시 와 리버스 프록시의 차이점
1. END POINT
"포워드 프록시" 는 사용자가 요청하는 END POINT 가 "실제 도메인" 이고 둘 사이의 통신을 담당한다.
"리버스 프록시" 는 클라이언트가 요청하는 END POINT 가 프록시 서버의 도메인이고 내부 서버(WAS) 의 정보는 알 수 없다.
2. 감춰지는 대상의 차이
"포워드 프록시" 는 사용자의 정보를 감춘다. 내부 서버는 포워드 프록시를 통해 요청을 받으므로 사용자의 정보를 알 수 없다.
"리버스 프록시" 는 서버의 정보를 감춘다. 사용자는 리버스 프록시 서버에게 요청하므르 사용자는 내부 서버의 정보를 알 수 없다.
'네트워크' 카테고리의 다른 글
쿠키와 세션 (0) | 2022.08.04 |
---|---|
로드밸런서 (0) | 2022.08.03 |
HTTP 비연결성 무상태성 (0) | 2022.07.30 |
그런 REST API로 괜찮은가 (0) | 2022.07.19 |
Cors (0) | 2022.07.17 |