Nginx란?

겔로그·2022년 10월 3일
0

NGINX

목록 보기
1/3
post-thumbnail

개요

오늘은 웹 서버의 정의와 웹 서버 중 하나인 Nginx에 대해 알아보는 시간을 가져보겠습니다.

Web server란?

웹 서버란, 하드웨어와 소프트웨어에 따라 두 가지 의미가 존재합니다.

  • 웹 서버: 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램
  • 웹 서버 (하드웨어): 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터

여러분은 웹 서버라는 단어를 들으면 어떤 생각이 드시나요? 위와 같은 용어로 정리가 되시나요? 안 되신다면 다음 그림을 보겠습니다.

웹 서버의 주된 기능은 클라이언트에 요청에 따라 웹 페이지를 클라이언트에게 전달하는 것입니다. 우리(개발자)는 웹 서버를 통해 자신이 만든 컨텐츠를 사용자에게 제공할 수 있습니다.

Nginx란?

Nginx란 apache 서버에서 영감을 받아 러시아 개발자 Igor Sysoev가 개발한 오픈 소스 웹 서버 프로그램입니다.

우리는 Nginx를 통해 HTTP와 리버스 프록시, IMAP/POP3 등의 서버 구동이 가능해집니다.

왜 Nginx인가?

사실 웹서버에는 Apache, IIS, LightSpeed 등 다양한 회사에서 출시한 웹 서버들이 존재합니다. 하지만 왜 많은 사람들이 Nginx를 사용할까요?

1. 가장 보편적인 웹 서버입니다.

20년간의 웹 서버 시장 점유율을 보시면 nginx의 점유율이 최근 10년간 급성장해 전 세계적으로 가장 높은 점유율을 기록하고 있는 것을 알 수 있습니다.

2. 간단하고 빠릅니다.

많은 웹서버는 Process-Driven 방식을 사용하는 반면, Nginx는 Event-driven 아키텍쳐를 사용하고 있습니다.

Process-Driven 기반 아키텍쳐는 클라이언트에게 요청이 올 경우 프로세스/쓰레드를 생성해 처리하는 구조여서 동시 접속 요청에 취약한 문제점이 존재합니다.

하지만 Nginx는 Event-driven 방식으로 Master Process와 다수의 Worker Process가 존재합니다. Worker Process는 클라이언트의 요청을 처리하는 역할을 수행합니다. 이 때 worker의 갯수는 설정값에서 변경이 가능합니다.
하나의 master 프로세스 내의 다수의 Worker 프로세스로 비동기 통신을 처리하기 때문에 동시 접속 및 요청 처리에 타 웹 서버 대비 좋은 성능을 보입니다.

3. 오픈 소스 웹 서버입니다.

일부 웹 서버는 엔터프라이즈용으로 유료 버전으로 출시해 사용자들은 비용을 지불해야 합니다. 하지만 Nginx는 오픈 소스로 비용 없이 사용이 가능합니다.

Nginx 구조

앞서 말했듯이 Nginx는 Master Process와 다수의 Worker process로 이루어져 있습니다. Worker process는 다음 구조로 이루어져 있습니다.

클라이언트의 요청이 들어올 경우 non-blocking으로 이벤트를 받아 STATE MACHINE에 연결이 할당됩니다.

요청이 들어올 경우 요청의 Header를 읽어 처리를 진행합니다. 이 때 nginx에서는 다음과 같은 설정이 가능합니다.

  • matching(일치하는지 확인)
  • Rate Limit(동시 접속 제한)
  • 인증 처리
  • logging

이후에 보시겠지만 각 컨텍스트 내부에 설정한 값을 통해 다음과 같은 기능들을 구현하실 수 있습니다. worker process는 설정된 값들을 통해 요청을 필터링하고 로깅합니다.

역할

그렇다면 Nginx를 어떠한 용도로 사용하는지 알아볼까요?

1. 웹 서버

단순히 정적 파일 (html,css,js)을 제공하는 기본적인 웹 서버로 이용이 가능합니다.

2. Forward Proxy

사용할 수 있는 기능

  • 사용자가 방문하는 사이트에 직접 연결하지 않고 프록시에 연결할 수 있습니다.
  • 사용자 그룹이 특정 사이트에 엑세스하는 것을 차단할 수 있습니다.
  • 정보 보호를 위해 프록시를 통한 사용자 ip 보안 강화가 가능합니다.

3. Reverse Proxy

Reverse Proxy는 실제 서버 앞에 위치해 클라이언트의 요청을 가로채 원본 서버에 요청을 보내고 응답을 대신 받습니다.

사용할 수 있는 기능

  • 로드 밸런싱/GSLB: 요청을 가로채 트래픽을 분산시킬 수 있습니다.
  • 원본서버의 IP 주소를 공개할 필요가 없습니다.
  • 캐싱 처리
  • SSL 암호화

Forward와 Reverse의 차이로는 클라이언트가 요청한 내용을 사전에 검열할 것이냐 아님 중간에 가로채서 처리할 것이냐의 차이라 생각합니다.

결론

오늘은 웹서버가 무엇이며 Nginx가 어떤 것인지, 어떤 기능을 수행하는지에 대해 알아보는 시간을 가졌습니다.

로드밸런싱 및 실제서버 ip 관리를 위해서라도 Nginx와 같은 웹 서버를 추가로 구축하는 것은 실제 서비스에 큰 도움이 될 것이라 생각합니다.

다음 시간에는 nginx 설치하는 방법에 대해 공유하는 시간을 가져보겠습니다.

감사합니다.

Reference

profile
Gelog 나쁜 것만 드려요~

0개의 댓글