Nginx란?
- 정적 컨텐츠 호스팅, 리버스 프록시, 캐싱, 로드 밸런싱, 미디어 스트리밍 등 다양한 역할을 해주는 웹서버
*웹서버 : 클라이언트의 정적 컨텐츠(이미지, HTML 등) 요청을 처리하며, 동적 컨텐츠 요청은 앱서버로 전달하는 역할의 서버
리버스 프록시란?
- 포워드 프록시와 달리 앱서버 앞에 위치하며 클라이언트의 요청이 앱서버에 도달하기 전에 거쳐가는 중간 매개체
- 클라이언트는 리버스 프록시를 통해 서버 응답이 오기에 내부 서버를 알 수 없다
- 특징
- 보안 : 클라이언트의 요청은 앱서버가 아닌 리버스 프록시 역할을 하는 웹서버가 먼저 받기에, 악의적인 공격(ex. DDOS)이 들어와도 앱서버와 DB서버는 안전하며, 앱서버의 IP 또한 감춰짐
- 로드밸런싱 : 요청이 많은 사이트(ex. Google, Naver 등)는 여러대의 서버를 두는데, 이 떄 특정 서버에 요청이 집중되지 않도록 리버스 프록시를 통해 분산 가능
- 캐싱 : 반복된 요청은 캐싱하여 더 빠른 응답을 통해 성능 향상
- 암호화 : 암호화된 클라이언트의 모든 요청을 복호화하고 응답도 SSL로 암호화되서 클라이언트에게 전송되기에 안전한 통신 가능. 따라서 모든 서버에 SSL 처리할 필요 없이 포워드 프록시에만 SSL 처리하면 되기에 비용 감소
- 무중단 배포 : 리버스 프록시와 연결된 서버들 중 한 서버가 배포 중일 때 해당 서버로 요청을 리버스 프록시가 막고 다른 서버로 요청이 가게 하여 유저가 서비스 이용 중단 경험 없이 무중단 배포가 가능해진다
포워드 프록시란?
- 리버스 프록시와 달리 클라이언트 앞에 위치하며 서버의 응답이 클라이언트에 도달하기 전에 거쳐가는 중간 매개체
- 앱서버는 포워드 프록시를 통해 클라이언트 요청이 오기에 클라이언트를 알 수 없다
- 기관 및 회사 등 보안이 중요한 곳에 사용
- 특징
- 보안 : 사내망같이 보안이 중요한 클라이언트 쪽에서 정해진 사이트에만 요청할 수 있도록 웹 환경 제한 가능하며 클라이언트의 IP 또한 감춰짐
- 캐싱 : 일반적으로 클라이언트가 서버에 요청시, 요청 전송 -> 요청 접수 -> 응답 생성 -> 응답 전송 같은 긴 과정을 거치는데, 캐싱을 통해 웹서버에까지 도달하지 않고 포워드 프록시로 처리하여 서버 부하 감소 및 조회 성능 향상
- 암호화 : 클라이언트의 요청이 포워드 프록시 서버 통과시 암호화