Development
NGINX란?
곽진돔
2024. 3. 25. 02:56
nginx.. 많이 들어보았고, 웹 서버라는걸 알고 있지만 자세히 조사해본적이 없는 것 같아서 정리하는 글 입니다.
웹 서버에는 보통 Apache 나 Nginx를 사용합니다. 그 중에서도 왜 Nginx를 더 많이 사용할까요?
nginx
Nginx (엔진엑스라고 발음)는 웹 서버, 리버스 프록시, 메일 프록시, 그리고 HTTP 캐시 기능을 제공하는 소프트웨어입니다. 이그로르 시쇼프(Igor Sysoev)에 의해 처음 개발되어, 2004년에 첫 공개 버전이 출시되었습니다. Nginx는 특히 높은 동시성 처리와 낮은 메모리 사용으로 유명하여, 고성능 웹 사이트를 운영하는 데 널리 사용됩니다.
Nginx 는 웹 서버로 주로 사용되지만 웹 서버로만 사용될 수 있는 도구는 아닙니다. 위에서 언급했듯이 웹 서버 외에도 리버스 프록시, 메일 프록시, HTTP 캐시 기능을 제공합니다.
주요 특징
- 높은 동시성 처리: Nginx는 비동기 이벤트 기반 구조를 사용하여, 수천 개의 동시 연결을 효율적으로 처리할 수 있습니다. 이는 C10k 문제(동시에 수천 개의 클라이언트를 처리하는 것)를 해결하기 위해 설계된 주요 기능 중 하나입니다.
- 리버스 프록시와 로드 밸런싱: 웹 서버 기능 외에도, Nginx는 리버스 프록시로서의 역할을 할 수 있으며, 여러 서버 간의 부하를 분산하는 로드 밸런서로 사용될 수 있습니다. 이는 웹 애플리케이션의 확장성과 가용성을 향상시키는 데 도움이 됩니다.
- HTTP 캐싱: Nginx는 정적 파일을 캐싱할 수 있는 기능을 제공하여, 웹 서버의 응답 시간을 개선하고, 백엔드 서버의 부하를 줄일 수 있습니다.
- 보안 기능: SSL/TLS를 통한 안전한 데이터 전송, HTTP/2 지원, 다양한 보안 관련 모듈 및 설정을 제공합니다.
- 유연한 구성: Nginx의 설정 파일은 매우 유연하며, 다양한 요구 사항에 맞게 조정할 수 있습니다. 이를 통해 사용자는 웹 서버, 리버스 프록시, 메일 프록시 등 다양한 역할을 손쉽게 구성할 수 있습니다.
사용 사례
- 정적 파일 서빙: Nginx는 정적 파일(HTML, CSS, JavaScript 등)을 처리하는 데 있어 매우 효율적입니다. 따라서 정적 웹 사이트나, 정적 자원을 제공하는 서버로 널리 사용됩니다.
- 웹 애플리케이션 프록시: 다수의 웹 애플리케이션 서버 앞에서 리버스 프록시로 작동하여, 사용자 요청을 애플리케이션 서버로 전달하고, 결과를 클라이언트에게 반환합니다.
- 로드 밸런싱: 여러 서버 간의 요청을 분산시켜, 시스템의 부하를 균등하게 분배하고, 서비스의 가용성을 높입니다.
- 보안: SSL/TLS를 통한 암호화된 통신을 제공하고, 웹 애플리케이션 파이어월(WAF) 역할을 수행하여 웹 애플리케이션을 보호합니다.
nginx와 nginx plus의 차이
nginx는 무료로 제공되고 있지만, 유료로 제공되고 있는 nginx plus도 있습니다.
- 지원 구독을 구매한 고객들은 NGINX Plus를 받게 되며, 사용자들은 전문가의 지원과 안정적인 릴리스를 확보할 수 있습니다.
- 상용 제품의 가치를 높이기 위해 보다 쉽게 관리하고 모니터링할 수 있는 기능을 추가합니다.
- NGINX Plus가 생성하는 Live Active Monitoring
- 데이터나 업스트림 서버의 로드 밸런싱을 동적으로 재구성하는 기능
- NGINX Plus는 웹 서버에서 예상치 못한 기능들, 즉 load balancer나 application delivery controller를 강화하는 데 중점을 두고 있습니다.
Refernece