Nginx란?
동시접속 처리에 특화된 웹서버 소프트웨어다.
Nginx의 기능1. HTTP서버(웹서버)
웹서버 개념의 이해를 위해 웹서버와 WAS(Web Application Server)을 구분해보자.
웹서버
: 클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 콘텐츠(. html,. png,. css 등)를 제공하는 서버
웹서버는 "클라이언트로부터 HTTP 요청을 받아 요청에 해당하는 파일을 HTTP를 통해 보내주는 프로그램"이라고 할 수 있다. API서버나 사이트와는 달리 동적으로 컨텐츠를 바꿀 수 없다.
/index.html 이라는 주소로 HTTP 요청을 보내면, 실제 웹 서버가 돌아가는 환경의 파일 시스템에 있는 index.html이라는 파일을 전송할 뿐, 파라미터에 따라 데이터를 다르게 내려준다거나 할 수는 없다. 한마디로 웹서버는 그냥 파일을 내려주는데, 그 전송 형식이 HTTP이라고 보면 되는 것이다.
WAS(웹 애플리케이션 서버)
: 동적 콘텐츠(DB 조회, 로직 처리가 요구되는 콘텐츠)를 제공하기 위해 만들어진 애플리케이션 서버
: 웹서버 + 웹 컨테이너
웹서버가 동적인 요청을 받았을 경우 해당 요청을 웹 서버에서 처리할 수 없기 때문에 컨테이너로 보낸다. 컨테이너는 동적인 데이터를 처리하여 정적인 페이지로 생성해주는 소프트웨어 모듈이다. 이와 같이 웹 서버와 웹 컨테이너(JSP, Servlet을 실행시킬 수 있는 소프트웨어)를 붙여놓은 서버를 WAS라고 한다. 주로 DB서버와 같이 수행된다.
이렇게 동적으로 컨텐츠를 업데이트하기 위해 WAS에서는 필연적으로 HTTP 요청을 해석하는 로직을 구현하게 된다. 백엔드 개발을 할 때 사용하는 Spring, Express, Flask 같은 웹 프레임워크들이 이에 해당한다.
이와 같은 내용을 참고하면, Nginx가 정적 컨텐츠 호스팅을 담당하는 HTTP 웹 서버의 역할을 한다는 것이 어떤 건지 좀 더 쉽게 이해할 수 있다.
Nginx의 기능2. 프록시 기능
NginX는 Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 한다.
nginx란 - 대체 nginx가 뭔데?
얼마 전부터 nginx라는 키워드가 눈에 밟히기 시작했다. 도커를 공부하는데 보는 글마다 nginx 이미지를 쓰고 있고, 쿠버네티스의 Ingress에서는 nginx ingress controller를 쓴다고 하고.. 심지어 사이트가
slashuniverse.com
NginX의 흐름
Nginx는 한 개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다.
위의 그림에서 보이듯이 Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능하다.
이러한 Nginx의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있다.
'Web > Nginx' 카테고리의 다른 글
도커(Docker Nginx) conf 설정 / log 확인 (0) | 2021.07.29 |
---|