이전에 쿠버네티스에 앱을 배포하는 예시에서부터 실제 서비스 구조 분석에까지 다양한 곳에서 nginx를 많이 마주치게 되었다. 이에 공부가 필수적이라고 생각되어 정리하게 되었다.
웹브라우저는 인터넷을 통해 웹페이지를 검색하고 표시하는 소프트웨어이다.
기억은 나지않겠지만 일단 컴퓨터를 새로 받고 나면 구글을 사용 하기 위해 크롬을 설치한다. 크롬에 들어가서 구글 검색창 nginx라고 검색하면 수많은 정보들이 나온다. 이 때 크롬이 웹브라우저의 일종인 것이다.
정적컨텐츠(Static)
정적컨텐츠는 말그대로 고정된 형태로 서버에 저장되어 있고, 클라이언트에게 그대로 전달되는 콘텐츠이다.예를 들면 HTML 파일, 이미지 파일, CSS 파일, 자바스크립트 파일 등이있다. 서버에 저장된 내용이 변경되지 않는 한, 사용자에게 제공되는 콘텐츠가 항상 동하다.
동적컨텐츠(Dynamic)
동적컨텐츠는 요청에 따라 서버에서 생성되거나 변경되는 콘텐츠를 의미한다. 사용자가 마이페이지 정보를 보는것처럼 데이터베이스에서 정보를 가져와 동적으로 웹페이지를 생성하거나, 사용자 입력에 따라 결과가 바뀌는 것이 동적컨텐츠의 예시이다.
웹서버(Web Server)는 클라이언트로부터 HTTP 요청을 받아들이고, 해당 요청에 대한 정적인 콘텐츠를 제공하는 서버이다.
동적인 콘텐츠를 처리하고 실행하는 소프트웨어이다. 웹 어플리케이션의 비즈니스 로직을 처리하고 데이터베이스와의 상호작용을 담당한다.
nginx는 오픈소스 웹서버이다.
따라서 정적 컨텐츠를 처리하는 역할을 한다. 그런데 뭐길래 이렇게 많은 사람들이 사용하는 것일까? 그 이유는 nginx 웹서버는 단순 정적 컨텐츠 처리 기능 이외의, 서비스 운영을 원활하게 도와주는 다양한 기능이 있기 때문이다. 대표적으로 아래 사항들이 있다.
1 . 로드 밸런싱
여러 서버에 들어오는 트래픽을 균등하게 분산시켜 서버 부하를 분산하는 로드 밸런싱 기능을 제공한다.
2. 리버스 프록시
클라이언트로부터의 요청을 받아 서버로 전달하고, 서버에서 받은 응답을 클라이언트에게 전달하는 리버스 프록시 기능을 수행한다.
3. SSL/TLS 지원:
암호화 통신을 위한 SSL/TLS 프로토콜을 지원해 웹사이트의 보안을 강화할 수 있다.
일반적으로 아래 그림처럼, 최종 서버 앞단에 위치하여 정적 컨테츠를 처리 및 로드밸런싱을 통해 뒷단 서버 부하를 덜뿐만 아니라, 중간에서 요청 처리를 매개하기 때문에 최종 서버의 IP를 숨길 수 있다는 장점도 있다.