본문 바로가기
Infra

[Nginx] Nginx는 뭘까? Nginx 기능에는 어떤 것들이 있을까?

by 진꿈청 2024. 3. 16.

Nginx 

기본적으로 Nginx는 단순히 정적 파일을 호스팅 해주는 웹서버이다.

 

하지만 다른 웹서버와 다른 특징이 있다.

 

nginx의 컨셉은 다음과 같다.

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

Nginx의 컨셉에 적은 자원으로 서비스를 빠르게 제공한다고 했는데, 어떻게 그게 가능할까?

 

바로 이벤트 처리 방식이다.

Event-Driven

 

https://berb.github.io/diploma-thesis/original/042_serverarch.html

 

Event-Driven 방식이 사용되어 적은 자원으로 빠른 제공이 가능해 진 것이다.

 

Nginx가 아닌 다른 웹 서버는 Thread Programming으로,

매 요청당 하나의 Thread를 생성한다.

 

그렇기 때문에 많은 요청이 있을 때 CPU의 부하를 걱정해야 하지만,
Nginx의 비동기 Event-Driven 방식은 요청을 하나의 Event라 보고 Event Handler으로 관리를 하기 떄문에 메모리의 낭비가 적다.

 

즉, 많은 요청에서 다른 웹서버보다 성능적 우위를 점할 수 있다.

그렇기에 더 빠른 서비스를 적은 자원으로 할 수 있게 되는 것이다.

 

그리고 추가적으로 Event Driven 방식으로 처리하여 부하에 대한 예측 가능성을 제공한다.

 

Nginx 갖는 다양한 기능들

Nginx에는 다양한 기능들이 제공되는데, 크게 5가지의 대표적인 기능이 있다

  • 장애에 대한 대응
  • 로드 밸런싱
  • Keep Alive 설정
  • Sub Domain 처리
  • Cache 처리

장애에 대한 대응

Nginx 는 장애에 대한 대응을 upstream module로 쉬운 관리가 가능하다.

로드 밸런싱

클러스터에 설정되는 서버 정보와 포트를 이용해서 어떤 서버가 어떤 작업을 처리할 것인지를 지정해서 부하 분산을 할 수 있게 한다.

Keep Alive 설정

Http 설정을 통해 Http 연결 소켓이 얼마나 지속되어 연결될 지를 설정한다.
Keep ALive으로 우리는 CPU을 좀 더 효율적으로 사용할 수 있으며 연결 시간에 대한 이득을 챙길 수 있다.

Sub Domain 처리

하나의 웹서버에서 여러 서비스를 호스팅할 수 있는 기능을 제공한다.

Cache 처리

특정 자원이나 이미지, CSS, JS와 같은 정적 데이터를 저장해서 웹 서비스의 응답 속도를 빠르게 처리할 수 있게 한다.

 

 

다재다능한 소프트웨어 Nginx

앞서 언급했듯 Nginx는 다재다능한 소프트웨어로, 주로 웹 서버로 사용된다. 
하지만 그 기능은 단순히 정적 파일을 호스팅하는 웹 서버 기능을 넘어, 프록시 서버, 로드 밸런서, HTTP 캐시 등 
다양한 역할을 수행할 수 있다.

웹 서버로서의 Nginx

웹 서버로 사용될 때, Nginx는 HTML, CSS, JavaScript, 이미지와 같은 정적 파일을
클라이언트(보통 웹 브라우저)에 전송하는 역할을 한다.

이러한 정적 파일 호스팅은 Nginx의 가장 기본적인 기능 중 하나로,
빠른 응답 속도와 효율적인 자원 사용을 지원한다.

 

프록시 서버로서의 Nginx

프록시 서버로 사용될 때, Nginx는 클라이언트와 백엔드 서버 사이에서 중개자 역할을 한다.
클라이언트로부터 요청을 받아 백엔드 서버로 전달하고, 서버의 응답을 다시 클라이언트에게 전달한다.

이 과정에서 로드 밸런싱, SSL 암호화 종단점, 캐싱 등 추가적인 기능을 제공하여 웹 애플리케이션의 성능과 보안을 향상.

 

로드 밸런서로서의 Nginx

로드 밸런싱 기능을 통해, Nginx는 여러 백엔드 서버로의 트래픽 분산을 관리할 수 있다. 
이를 통해 웹 애플리케이션의 가용성과 확장성을 향상시킬 수 있다.

로드 밸런싱은 특히 트래픽이 많은 웹 사이트나 애플리케이션에서 중요한 역할을 한다.

 

HTTP 캐시로서의 Nginx

HTTP 캐싱 기능을 사용하여, Nginx는 자주 요청되는 콘텐츠를 메모리나 디스크에 저장 후 제공.

이는 서버의 부하를 줄이고 사용자에게 더 빠른 응답 속도를 제공하는 것이 가능해진다.

 

 

정리

결론적으로, Nginx는 단순한 웹 서버를 넘어서 다양한 네트워크 기능을 제공하는 강력한 소프트웨어이다.
그 사용법과 구성은 매우 유연하여, 웹 애플리케이션의 다양한 요구 사항에 맞추어 최적화 하는것이 가능하다.

 

 

참고 블로그

https://wonit.tistory.com/333

 

[Nginx] 왜 Nginx 이어야 하는가? Nginx의 주요 기능으로 알아보자.

오늘은 우리가 왜 Nginx에 대해서 알아야 하고 배워야 하는지에 대해서 알아볼 것이다. Nginx에 대해 설명하는 모든 글은 Nginx에 대한 점유율로 Apache를 비교하곤 한다. 최근에 Apache와 Nginx의 점유율

wonit.tistory.com