NGINX
Nginx
- 높은 성능과 안정성이 뛰어난 웹 서버로 현재 가장 많이 사용되고 있는 웹 서버임.
- Apache와 같은 웹 서버 대비 가볍고, 대규모 어플리케이션 처리에 적합
- Apache 웹 서버의 성능 제한을 해결하기 위해 작성되었음. 연결당 프로세스 또는 스레드 접근 방식에서 차이점이 존재함.
- Nginx의 경우 수천개의 HTTP 연결을 동시에 처리할 수 있음. Nginx는 가볍고 확장이 가능함.
정적 컨텐츠
- 1,000개의 동시 연결 접속을 실행하여 확인한 벤치마크 결과 Apache보다 약 2.5배 빠름. 또한, 메모리 효율성 또한 높게 나왔음.
- 만약, 동시 접속이나 대용량 서비스 처리면에서 정적 콘텐츠를 제공해야 한다면 NGINX 가 더 나은 선택
웹 서버를 이용하는 이유
WAS의 부담을 줄여주기 위함
- Spring, Node, FastAPI 등 WAS는 로그인, 회원 가입 등 동적인 작업이 매우 많으며 수많은 연산이 이루어짐(작업량이 많음).
- HTML, CSS, JS 등 정적인 파일을 클라이언트에게 전달하는 역할을 분리하고 이를 웹 서버에게 위임함으로 WAS의 작업 부담을 줄일 수 있음.
보안 기능을 제공함
- 보안 기능을 제공하여 웹 페이지에 대한 접근을 제어할 수 있음.
- SSL/TLS 프로토콜을 활용하여 데이터 암호화 가능
- 액세스 제어, 웹 방화벽 등의 보안 기능을 제공하여 웹 사이트 보호 가능
높은 성능 제공
- 비동기 처리를 통해 높은 성능 제공.
- 이벤트 기반, 멀티 프로세싱, 스레드 풀 등의 기술을 사용하여 수천 대의 클라이언트의 요청을 동시에 처리할 수 있음
많은 웹 서버 중 NGINX를 사용하는 이유
높은 성능, 효율적 메모리 활용
- 비동기 I/O 처리 방식을 활용하여 높은 성능을 제공함
- 대규모 서비스에서 빠른 응답을 보장함.
- 타 웹 서버 대비 메모리 효율성이 높아 성능적 이점이 있음
리버스 프록시(Reverse Proxy) 사용
- 중간에서 중계를 통해 원하는 서비스로 이동시켜 주는 프록시 역할을 함
- 포워드 프록시 : 클라이언트와 인터넷 사이에 있는 영역을 의미함. 클라이언트가 어떠한 정보를 요청하면 포워드 프록시가 이를 대신 받아 서버에게 전달.
- 서버의 반환 값을 포워드 프록시가 받아 이를 다시 클라이언트에게 전달
- 클라리언트의 IP주소가 웹 서버에 노출되지 않아, 클라이언트의 위치나 신원을 식별이 어려워짐
- 리버스 프록스 : 인터넷과 백엔드 그 사이의 서버 영역.
- was 서버가 여러 개 있다고 했을 때 사용자에 요청에 따라 1번 서버와 2번 서버로 요청에 해당하는 웹 서버로 길을 분배해 줄 수 있음 → 로드 벨런싱
SSL
- 웹 사이트와 사용자 간의 통신을 암호화하고 보안을 유지하는데 사용되는 프로토콜.
- HTTPS로 알려진 HTTP 프로토콜 기반의 보안 기술
- SSL 프로토콜을 사용하여 웹 서버와 클라이언트 간의 보안 연결을 설정
- SSL 인증서를 사용하여 서버의 신원을 인증함.
- Nginx에 HTTPS 인증서를 제공하여 HTTPS 암호화 가능
비동기처리
- 이벤트 루프 방식을 활용하여 높은 성능을 제공함.
- 동시에 여러 요청이 들어왔을 시에도 많은 트래픽을 동시에 처리할 수 있어 빠른 응답을 보장할 수 있음.
- Event Driven, 비동기 특성을 가짐. 이때 Event Loop 기반으로 요청에 대한 작업을 처리함.
- Nginx Event Driven 내에서 Event Handler에서 작업을 마치게 되면 완료된 순서대로 Queue에 쌓이고, Event Loop을 돌면서 Queue에 완료된 작업이 있는지 체크하면서 CPU가 IDLE 한 상태가 없도록 활동함
'Infra > NGINX' 카테고리의 다른 글
2. NGINX 설치 With HTTPS(CertBot) (0) | 2024.01.31 |
---|