NGINX 란?

1 분 소요

NGINX

Nginx는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다.

Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가진다. 이것은 아파치 HTTP 서버의 스레드/프로세스 기반 구조를 가지는 것과는 대조적이다. 이러한 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해준다.

apache보다 동작이 단순하고 동시접속 처리에 특화 되었다고 한다.

Request 처리 방식에서 apache 서버와는 다르다는 것이 핵심적인 차이이다.

Event-Driven 방식을 채택하여 높은 성능을 발휘한다.

한 마디로

더 적은 자원으로 더 빠르게 서비스

출처 :nginx-wiki

Apache

  • 쓰레드 / 프로세스 기반 구조로 요청 하나 당 쓰레드 하나가 처리하는 구조
  • 사용자가 많으면 많은 쓰레드 생성, 메모리 및 CPU 낭비
  • 1 쓰레드 : 1 클라이언트

Nginx

  • 비동기 Event-Driven 구조
  • 다수의 연결을 효과적으로 처리 가능
  • 코어 모듈이 Apache보다 적은 리소스로 빠르게 동작 가능

쓰레드 기반은 하나의 커넥션 - 하나의 쓰레드를 먹지만, Event-driven 구조는 여러 커넥션을 Event Handler에서 비동기 방식으로 처리해서 먼저 처리되는 것부터 로직이 진행되도록 한다.

비동기 방식과 Event-driven 방식은 다른 포스팅에서 정리 하도록 한다.

참고할 블로그

할 수 있는 일은

  1. HTTP server
  2. Reverse proxy server
  3. Mail proxy server
  4. Generic TCP/UDP proxy server

HTTP server

기본적으로 정적파일을 처리하는 web server의 역할을 할 수 있다.

Reverse proxy server

클라이언트의 요청을 각 Application server에 배분해준다.

클라이언트에서는 80포트로만 요청이 들어오는데, 이 들어오는 요청을 8080, 8081 등 여러 Application server로 보내준다.

일반적으로 리버스 프록시는 각 application server에 요청을 배분해서 부하를 분산하고 (load balancing) 캐시 서버로서의 역할을 하지만 WAS에 리버스 프록시를 두는 이유는 주로 요청에 대한 버퍼링이다.

단일 프로세스가 처리할 수 있는 요청수를 제한하는 서버에서는 통신 속도가 느린 클라이언트(A)가 있으면 nginx가 없는 경우 A 때문에 1개의 프로세스가 응답 대기 상태가 된다. 리버스 프록시는 응답을 버퍼링 해 Server가 각 클라이언트와 통신을 신경쓰지 않고 지연 없이 처리할 수 있게 한다.

참고 : nginx-공식페이지

참고 : 블로그

태그:

카테고리:

업데이트:

댓글남기기