record logo record

목차

Nginx란?

Nginx는 가벼움과 높은 성능을 목표 로 러시아의 프로그래머, 이고르 시쇼브가 Apache의 C10K Problem(하나의 웹서버에 10,000개의 클라이언트의 접속을 동시에 다룰 수 있는 기술적인 문제)를 해결하기 위해 만들어졌습니다.

Event-Driven

web-nginx-thread-eventdriven-programming

Thread 기반 은 하나의 커넥션당 하나의 쓰레드를 잡아 먹지만

Event-Driven 방식 은 여러개의 커넥션을 전부 Event Handler를 통해 비동기 방식으로 처리 해 먼저 처리되는 것부터 로직이 진행되게끔 합니다.

HTTP

Nginx는 정적 파일을 처리하는 HTTP 서버로서의 역할 을 합니다.

웹서버의 역할 은 HTML, CSS, Javascript, 이미지와 같은 정적인 정보를 웹 브라우저(Chrome, IE, Firefox 등)에 전송하는 역할을 한다. (HTTP 프로토콜을 준수)

Reverse Proxy

web-nginx-reverseproxy

리버스 프록시(reverse proxy)란, 클라이언트 가 가짜 서버에 요청(request)하면, 프록시 서버(Nginx)reverse server(응용프로그램 서버) 로 요청을 전달하고 실제 요청에 대한 처리는 뒷단의 reverse server(응용프로그램 서버)들이 처리한 데이터를 가져오는 역할을 한다.

웹 응용프로그램 서버 에 리버스 프록시(Nginx)를 두는 이유 는 요청(request)에 대한 버퍼링이 있기 때문이다. 클라이언트가 직접 App 서버에 직접 요청하는 경우, 프로세스 1개가 응답 대기 상태가 되어야만 한다. 따라서 프록시 서버를 둠으로써 요청을 배분하는 역할을 한다.

Apache와 Nginx 비교

기존에는 거의 Apache 를 웹서버로 사용했습니다. Apache는 다양한 기능과 서드파티 확장 기능 등 어떠한 웹 애플리케이션에도 적용할 수 있는 웹서버였지만 클라이언트 접속 당 CPU와 메모리 사용량이 증가함으로써 확장성이 떨어진다는 단점이 있었습니다. 그래서 대량의 클라이언트 접속을 관리하기 위한 웹서버가 필요로 했고, 그래서 나온 것이 Nginx 입니다.

Apache

Nginx

References