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 주요 사용 사례:
- 웹 서버: 정적 콘텐츠 제공 (HTML, 이미지, CSS, JS 등)
- 리버스 프록시 및 부하 분산: 여러 애플리케이션 서버 앞단에서 요청을 분배
- SSL/TLS 처리: HTTPS 연결 처리 및 보안 강화
- API 게이트웨이: API 요청 처리 및 관리
- 보안: 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 |