Nginx는 주로 웹 서버로 사용되며, 고성능, 높은 확장성, 낮은 리소스 소모 등의 특성으로 널리 사용함

Nginx 역할

1. 웹 서버 (HTTP 서버)

Nginx는 웹 서버로 가장 많이 사용됩니다. HTTP 요청을 처리하고 정적 파일 (예: HTML, CSS, JavaScript, 이미지 등)을 클라이언트에게 제공합니다. 이를 통해 웹 페이지가 클라이언트의 브라우저에 렌더링됩니다.

  • 정적 컨텐츠 제공: HTML, 이미지, CSS, JavaScript 파일 등을 서버에서 클라이언트로 제공.
  • 빠른 성능: 높은 동시 처리 성능을 자랑하며, 수많은 사용자 요청을 효율적으로 처리합니다.

2. 리버스 프록시 (Reverse Proxy)

Nginx는 리버스 프록시 서버로도 사용됩니다. 리버스 프록시는 클라이언트의 요청을 받아 다른 서버로 전달하고, 그 응답을 다시 클라이언트에게 전달하는 역할을 합니다.

  • 부하 분산 (Load Balancing): 여러 백엔드 서버(예: 애플리케이션 서버)로 요청을 분산시켜 부하를 고르게 분산시킵니다.
  • 보안: 클라이언트는 실제 백엔드 서버의 IP나 정보를 알지 못하며, Nginx가 앞단에서 요청을 처리합니다.
  • 캐싱 (Caching): 클라이언트의 요청에 대해 빠른 응답을 제공하기 위해 정적 리소스를 캐시하여 성능을 향상시킵니다.

3. 부하 분산 (Load Balancing)

Nginx는 부하 분산 기능을 제공하여, 여러 서버들에 걸쳐 요청을 분배하고 서버의 성능을 최대화합니다.

  • Round-robin 방식: 요청을 순차적으로 서버에 분배.
  • IP 해시: 클라이언트 IP에 따라 요청을 특정 서버로 보냄.
  • Least Connections: 현재 연결이 적은 서버로 요청을 보냄.

4. SSL/TLS 종단 (SSL/TLS Termination)

Nginx는 SSL/TLS 종단을 처리하여 보안 연결을 관리합니다. 클라이언트와 Nginx 간의 보안 연결을 처리하고, 백엔드 서버와는 일반 HTTP로 통신하는 방식으로 효율성을 높입니다.

  • 암호화/복호화 처리: 클라이언트와 Nginx 간의 SSL 연결을 처리하고, 백엔드 서버와는 일반 HTTP 연결을 유지합니다.
  • 보안: 웹 애플리케이션에 SSL을 쉽게 적용할 수 있게 도와줍니다.

5. API 게이트웨이

Nginx는 API 게이트웨이로도 사용될 수 있습니다. 여러 API 서버를 프록시하고, API 요청을 관리하는 역할을 합니다.

  • 라우팅: API 요청을 여러 서비스에 라우팅.
  • 인증 및 권한 부여: API 요청에 대한 인증 및 권한을 관리.
  • 모니터링: API 요청 및 응답을 모니터링하고 로깅.

6. 웹 애플리케이션 방화벽 (WAF)

Nginx는 웹 애플리케이션 방화벽 역할도 할 수 있습니다. 보안 필터링을 통해 악의적인 공격으로부터 서버를 보호합니다.

  • DDoS 공격 차단: 대규모 서비스 거부 공격을 차단합니다.
  • 웹 보안 강화: 악성 요청, SQL 인젝션, 크로스 사이트 스크립팅(XSS) 등 다양한 보안 위협을 차단합니다.

7. 컨텐츠 압축 및 최적화

Nginx는 컨텐츠 압축을 지원하여, 클라이언트에게 보내는 데이터의 크기를 줄여 네트워크 성능을 개선합니다.

  • gzip 압축: HTML, CSS, JavaScript 파일 등을 gzip으로 압축하여 네트워크 대역폭을 절약하고 페이지 로딩 속도를 향상시킵니다.

Nginx 주요 사용 사례:

  1. 웹 서버: 정적 콘텐츠 제공 (HTML, 이미지, CSS, JS 등)
  2. 리버스 프록시 및 부하 분산: 여러 애플리케이션 서버 앞단에서 요청을 분배
  3. SSL/TLS 처리: HTTPS 연결 처리 및 보안 강화
  4. API 게이트웨이: API 요청 처리 및 관리
  5. 보안: WAF 기능으로 악성 요청 차단

Nginx의 장점:

  • 성능: 비동기, 이벤트 기반 아키텍처로 많은 요청을 동시에 처리할 수 있습니다.
  • 확장성: 부하 분산 및 프록시 서버로 여러 서버를 효율적으로 운영할 수 있습니다.
  • 경량화: 적은 리소스로 높은 성능을 제공합니다.

'Front-End' 카테고리의 다른 글

SPA(Single Page Application)  (0) 2025.02.11
포맷팅 라이브러리 사용법  (0) 2024.11.21
JavaScript-Object  (0) 2024.11.10
JavaScript-Function(2)  (0) 2024.11.10
JavaScript-Function  (0) 2024.11.10

+ Recent posts