목차
Nginx란 무엇인가요?
Nginx란 높은 성능을 가진 비동기, 이벤트 기반 구조의 경량화 웹 서버 프로그램 입니다.
Nginx는 높은 동시 처리 능력을 가져 트래픽이 높아도 효율적으로 처리합니다. 또한 정적 컨텐츠를 제공하며 로드밸런싱으로 서버의 부하를 분담합니다.
이런 특징으로 Nginx는 빠른 응답을 가능하게 하여 웹 사이트를 가볍게 하고 성능을 향상 시킵니다.
Nginx는 왜 사용하나요?
Nginx의 주된 사용 이유는 높은 동시 연결 처리 능력 입니다.
Nginx는 이벤트 기반 구조로 설계되어 있어 동시에 많은 요청을 처리하는데 효과적입니다. 이는 높은 트래픽이 발생하는 환경에서도 높은 성능을 유지하게 합니다.
또한 Nginx를 사용하면 WAS에 부담을 주일 수 있습니다. Nginx는 정적 컨텐츠 제공을 담당해서 WAS의 일을 줄여주었으며 리버스 프록시 서버로 로드밸런싱 기능을 제공해 부하를 서버에 나누어 한 서버가 너무 많으 부하를 받는 것을 방지합니다.
Nginx는 보안을 강화합니다. SSL/TLS를 지원해 웹 사이트와 클라이언트 통신을 암호화해서 보안을 강화시켜줍니다.
이렇듯 Nginx는 높은 동시 처리 능력, WAS 부담 감소, 보안 등등의 이유로 사용되고 있습니다.
Nginx는 어떤 역할을 하나요?
Nginx는 주로 Web Server와 Reverse Proxy Server의 역할을 합니다.
웹 서버로서 HTMl, CSS, JS, 이미지 같은 정적 컨텐츠를 제공합니다.
리버스 프록시 서버로 클라이언트의 요청을 적절한 백엔드 서버로 전달하고 응답을 받아 클라이언트에게 반환합니다. 이 때, 로드밸런싱 기능이 적용되어 서버의 부하를 나누어 집니다.
이 밖에도 캐시, 메일 프록시 등의 역할을 합니다.
이러한 역할을 통해 웹 사이트의 성능을 향상시켜 사용자에게 빠른 응답을 제공해 줍니다.
Nginx의 장단점은 무엇인가요?
장점
- 이벤트 기반 구조로 높은 동시 연결 처리 능력
- Worker Process가 비동기로 대기 시간 없이 계속 요청을 처리하므로 효율적인 자원 사용
- 정적 파일 제공, WAS에 부담을 덜어줌
- 리버스 프록시 서버로 로드밸런싱 기능 제공, 서버의 부하를 나눔
- SSL/TLS 지원으로 HTTPS 활용해 사용자들간의 통신 보안 강화
단점
- 동적 컨텐츠 처리에 약함
- 모듈의 호환성 및 다양성이 Apache에 부족함
Nginx 구조에 대해 설명해 주세요.
Nginx는 Master Process, Worker Process로 이루어져 있습니다.
Master Process는 Nginx 설정을 읽거나 포트에 바인딩 등 주요한 기능을 합니다. 또한 Worker Process를 생성합니다.
Worker Process는 실질적으로 클라이언트의 요청을 처리합니다. Worker Process는 Nginx 설정에 개수를 설정할 수 있지만 기본적으로 CPU 코어 수에 맞게 할당합니다. 클라이언트의 요청이 증가한다고 Worker Process의 수가 증가하지 않습니다.
클라이언트의 요청은 이벤트 큐에 쌓이게 됩니다. Worker Process는 이 이벤트 큐에 쌓인 요청을 처리합니다. 이 때 비동기적으로 일을 처리하기 때문에 Worker Process는 응답이 오기 전까지 기다리지 않고 다른 일을 처리하기 때문에 효율적으로 작업을 처리할 수 있습니다.
이런 특성 때문에 Nginx는 동시에 많은 요청을 처리하는데 효율적입니다.