Nginx(엔진엑스)란?

2024. 9. 9. 18:45·Category/Note
728x90

Nginx(엔진엑스)는 고성능의 웹 서버이자 리버스 프록시 서버로 많이 사용되는 소프트웨어입니다. 웹 트래픽을 처리하는 데 매우 효율적이며, 다양한 역할을 수행할 수 있는 다목적 서버입니다.

 

Nginx의 주요 역할 및 기능:

  1. 웹 서버 (HTTP 서버):
    • Nginx는 주로 정적 콘텐츠(HTML, CSS, 이미지, JavaScript 파일 등)를 제공하는 정적 웹 서버로 사용됩니다. Apache와 같은 다른 웹 서버 소프트웨어에 비해 더 높은 성능을 제공하며, 특히 동시에 많은 요청을 처리하는 데 유리합니다.
    • 고성능이 요구되는 환경에서 사용되며, 대규모 트래픽을 처리하는 데 적합합니다.
  2. 리버스 프록시 서버:
    • Nginx는 리버스 프록시 서버(클라이언트 대신 요청을 처리해주는 중간 서버)로서 클라이언트의 요청을 백엔드 서버(예: 애플리케이션 서버, 데이터베이스 서버 등)로 전달하고, 응답을 다시 클라이언트에게 전달하는 역할을 합니다.
    • 이때, Nginx는 요청을 여러 서버에 분배하는 로드 밸런서로서도 사용될 수 있습니다. 이를 통해 트래픽 부하를 여러 서버로 분산시켜 서버의 성능을 향상시키고 가용성을 높입니다.
  3. 로드 밸런서:
    • Nginx는 로드 밸런싱 기능을 제공합니다. 여러 애플리케이션 서버에 트래픽을 분배하여 서버 부하를 관리하고, 장애가 발생한 서버를 자동으로 우회할 수 있습니다.
    • HTTP, HTTPS, TCP, UDP 프로토콜을 지원하며, 라운드로빈, 최소 연결 등 다양한 로드 밸런싱 알고리즘을 지원합니다.
  4. SSL/TLS 처리:
    • Nginx는 SSL/TLS(데이터를 안전하게 주고받기 위한 암호화 기술)를 사용하여 HTTPS 연결을 처리할 수 있습니다. 이를 통해 보안된 웹사이트를 운영할 수 있으며, SSL 인증서(웹사이트가 안전하다는 것을 증명해주는 디지털 신분증)를 적용하여 데이터를 암호화할 수 있습니다.
    • SSL 오프로딩(SSL Termination. 중간 서버가 SSL/TLS 처리를 대신해서 서버의 성능을 높이는 방법) 기능을 통해 애플리케이션 서버에 부담을 줄일 수 있습니다.
  5. 정적 콘텐츠 캐싱:
    • Nginx는 정적 콘텐츠를 캐싱하여 자주 요청되는 리소스를 빠르게 제공할 수 있습니다. 이를 통해 서버의 부하를 줄이고 응답 속도를 향상시킵니다.
  6. 빠른 연결 처리:
    • Nginx는 이벤트 기반 아키텍처를 사용하여 비동기 방식으로 요청을 처리합니다. 이는 Apache와 같은 다른 웹 서버가 사용하는 쓰레드 기반 방식보다 메모리 사용량을 적게 하며, 많은 동시 접속을 처리할 수 있습니다.

Nginx의 사용 사례:

  • 정적 파일 제공: 이미지, CSS, JavaScript와 같은 정적 리소스를 빠르게 제공하는 웹 서버로 사용.
  • 리버스 프록시 및 로드 밸런서: 백엔드 애플리케이션 서버들에 요청을 분배하고, 트래픽을 관리하는 프록시 서버.
  • API 게이트웨이: API 요청을 라우팅하거나 요청을 필터링하는 역할을 수행.
  • HTTP/2 지원: 최신 프로토콜을 지원하여 웹사이트 성능을 최적화.
  • 보안: DDoS 공격 방어, SSL/TLS 암호화 등을 통해 웹 서버의 보안 강화를 도모.

Nginx vs. Apache:

  • 아키텍처: Apache는 프로세스 기반 아키텍처를 사용하여 요청마다 새로운 프로세스를 생성하는 반면, Nginx는 비동기 이벤트 기반 아키텍처로 요청을 처리하므로 더 적은 리소스로 더 많은 요청을 처리할 수 있습니다.
  • 성능: Nginx는 특히 많은 동시 접속을 처리할 때 성능이 뛰어나며, 적은 메모리 사용량으로도 높은 성능을 발휘합니다.
  • 사용 용도: Apache는 유연하고 모듈화된 구성이 가능하여 확장성이 뛰어난 반면, Nginx는 높은 성능과 빠른 응답 속도가 요구되는 환경에서 많이 사용됩니다.

결론:

Nginx는 고성능 웹 서버와 리버스 프록시 서버의 대표적인 솔루션 중 하나로, 동시 접속이 많은 웹사이트나 고성능이 요구되는 애플리케이션에서 많이 사용됩니다. 트래픽 관리, 보안, 로드 밸런싱 등 다양한 기능을 제공하며, 이벤트 기반의 비동기 처리 방식을 사용해 적은 자원으로도 많은 요청을 처리하는 데 최적화되어 있습니다.

 

728x90

'Category > Note' 카테고리의 다른 글

배치 파일(Batch File)이란?  (0) 2024.09.10
SSL/TLS란?  (0) 2024.09.09
나노 편집기란?  (0) 2024.09.09
apt란?  (0) 2024.09.09
sudo(Superuser Do)란?  (0) 2024.09.09
'Category/Note' 카테고리의 다른 글
  • 배치 파일(Batch File)이란?
  • SSL/TLS란?
  • 나노 편집기란?
  • apt란?
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • 전체
    오늘
    어제
    • 분류 전체보기 (356) N
      • Category (351) N
        • Algorithm (7)
        • SQL (2) N
        • Java (4)
        • C (9)
        • React (7)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26)
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (21)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • 정보처리기사 (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
        • 사이드 프로젝트 (1)
        • Note (78) N
        • Socket (1)
        • 개인 정보 처리 방침 (1)
        • 회고 (0)
        • Vue.js (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Collections
    react
    math.h
    core web vitals
    json.parse(json.stringify())
    public vs assets
    intellij 콘솔 한글 깨짐
    styled-components
    Jest
    x.y.z (메이저.마이너.패치)
    프로세스 강제 종료
    semver)
    inp
    named export vs default export
    ajax (asynchronous javascript and xml)
    stdlib.h
    javascript 필수 문법
    mermaid-cli
    jackson 라이브러리
    중첩 함수(nested function)
    시맨틱 버전(semantic versioning
    defaultdict
    react router
    쉽게 풀어쓴 C언어 Express
    structuredclone()
    chrome extension 자동 배포
    소프트웨어 버전 관리
    useEffect
    counter
    원시값(primitive)
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Corinee
Nginx(엔진엑스)란?
상단으로

티스토리툴바