과거의 내가 미래의 나에게
웹 서버 학습 (2) - Nginx 본문
저번 시간에 웹 서버가 무엇인지 살펴보았다. 오늘은 다양한 웹 서버 소프트웨어 군에서 Nginx에 대해서 학습해보려한다.
Nginx는 웹 서버 소프트웨어로 가벼움과 높은 성능이 그 특징이다. 다른 웹 서버 제품군인 Apache에 비해 동작이 단순하기에 동시접속 처리에 특화되어있다. 따라서 동시접속자가 많은 서비스군이라면 Nginx 환경이 권장된다.
1. 정적 콘텐츠 제공
Nginx의 가장 핵심 기능으로 웹 페이지를 클라이언트에게 제공해준다.
클라이언트가 브라우저 주소창에 URL을 입력한 후 전송하면 웹 서버는 그 HTTP 요청을 읽어 사용자가 원하는 HTML 문서 등 정적 콘텐츠를 전달해준다. 단순히 저장된 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리한다.
2. 리버스 프록시
프록시(proxy)란 네트워크 통신에서 주로 사용되는 개념으로 클라이언트와 서버의 중간에 위치하여 통신을 중재해주는 역할을 말한다. 프록시와 리버스 프록시는 그 역할이 약간은 다르다.
1) 프록시
클라이언트를 대신하여 서버와 통신하는 중간 서버이다. 클라이언트를 대신하다 보니 클라이언트의 익명성을 보장해주고 다른 악성 웹사이트가 클라이언트에게 접근하려는 것을 막아주거나 특정 콘텐츠의 접근을 막아주기도 한다.
2) 리버스 프록시
서버를 대신하여 클라이언트와 통신하는 중간 서버이다. 리버스 프록시 서버가 클라이언트 대신 서버와 통신함으로 보안이 강화하고 서버의 부하를 해소시켜주기도 한다.
Nginx는 리버스 프록시 서버의 역할로써 다양한 기능을 제공하게 되는데 좀 더 구체적으로 설명하면 아래와 같다.
- 로드 밸런서
클라이언트의 요청을 분산시켜서 여러 백엔드 서버에 보내어 트래픽 부하를 고르게 분산한다. 이로 인해 서버 자원을 효율적으로 사용하고 응답 시간을 단축하며 성능을 최적화 하는데 도움이 된다. 또한 특정 서버가 다운되어도 다른 서버에 요청을 하면 됨으로 가용성이 확보되기도 한다. - 보안
클라이언트는 실제 서버의 IP 주소를 알 수 없고 리버스 프록시 서버가 대신 서버와 통신하기에 서버를 직접적으로 공격할 수 없도록 하여 보안이 강화된다. 또한 리버스 프록시 서버에서 인증을 처리함으로 인해 서버가 인증을 처리할 필요도 덜어지게 될 것이다. - SSL/TLS 해제
리버스 프록시 서버가 백엔드 서버 대신 SSL/TLS 연결을 처리하고 암호화복호화를 해주어 백엔드 서버의 부담이 줄어들게 된다.
또한 SSL/TLS 인증서를 중앙에서 관리하고 갱신할 수 있어 관리가 간편해지며 보안 정책을 일괄적으로 적용할 수 있게 된다.
3. 캐싱
정적 콘텐츠를 캐싱하여 성능을 향상 시킬 수도 있다. 이를 통해 자주 요청되는 콘텐츠는 캐싱해두어 백엔드 서버의 부하를 줄이기도 하고 더 빠른 응답으로 사용성을 향상시키기도 한다.