NginX란
트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반구조의 경량 웹서버 프로그램
정적 파일을 응답해주는 웹서버로 활용되거나
리버스 프록시를 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서의 역할을 수행함
웹서버 : 단순히 정적 파일 응답. HTML, CSS, JS 같은 정적인 정보를 사용자(브라우저)에 전송해주는 역할
WAS(Web Application Server) : 클라이언트 요청에 대해 동적 처리가 이뤄진 후 응답. 비즈니스 로직, 데이터 처리를 하는 서버
NginX의 특징
아파치(apache) 보다 동작이 단순하고 전달자 역할만 하기 때문에 가볍고,
동시접속에 특화되어 여러 요청을 한 번에 처리할 수 있음
리버스 프록시 서버로 활용하여 서버의 부하를 줄 일 수 있는 로드 밸러서로 활용됨
NginX의 구조
마스터 프로세스(Master Process) : 설정 파일을 읽고 워커 프로세스를 생성
워커 프로세스(Worker Process) : 실제로 일하는 곳, 워커 프로세스가 생성될 때 지정된 listen 소켓을 배정받고, 해당 소켓에 요청이 들어오면 커넥션을 형성하고 처리함
워커 프로세스가 하나의 커넥션만 담당하지 않고, 요청이 없다면 새로운 커넥션을 형성하거나, 다른 요청을 처리함.
이벤트(Event) : NginX에서 커넥션 형성과 제거, 새로운 요청 처리하는 것
워커 프로세스의 Event Driven방식
1. 이벤트들은 큐 형식으로 워커 프로세스에 전달함
2. 이벤트 큐에 담긴 이벤트들은 워커 프로세스가 처리할 때까지 비동기 방식으로 대기함
3. 워커 프로세스는 이벤트를 꺼내어 처리함
만약 큐에 담긴 요청이 오래 걸린다면, 스레드 풀을 만들어 이벤트를 위임하여 따로 수행하고, 워커 프로세스는 다른 이벤트를 처리함
Event Driven(비동기 처리방식)으로 요청이 들어오면 어떤 동작을 해야 하는지만 알려주고 다른 요청을 처리하는 방식
CPU와 관계없이 모든 입출력을 전부 이벤트 리스너로 전달하기 때문에
흐름이 끊기지 않고, 응답이 빠르게 진행되어 1개의 프로세스만으로도 작업을 빠르게 처리함
리버스 프록시 서버 활용
리버스 프록시(Reverse Proxy) : 클라이언트의 요청을 받아 WAS로 전달하여 응답받은 후 다시 클라이언트에 전달하는 역할을 수행하는 서버
즉, 클라이언트와 WAS 사이에 존재하는 서버
리버스 프록시 서버의 장점
- 로드 밸런서의 역할
여러 서버를 운영할 경우, 특정 서버에만 요청이 몰리지 않도록 요청을 여러 서버로 분산하는 작업을 수행
- 보안 강화
디도스와 같은 공격이 들어오더라도 WAS 서버 앞단에 NginX의 프록시 서버를 두어 실제 서비스, DB서버와 연결된 WAS가 아닌 NginX 서버가 막아주기 때문에 보안이 강화됨
- 캐싱
HTTP 프로토콜을 사용하여 전달하는 콘텐츠를 캐싱하여 결과를 더 빠르게 응답할 수 있음
- SSL 터미네이션
클라이언트와 HTTPS로 통신하고, WAS와 HTTP로 통신
서버 속도 향상
'coding > IT, CS' 카테고리의 다른 글
SQL - 쿼리문 CRUD 명령어 (1) | 2022.12.31 |
---|---|
시간 복잡도, 공간 복잡도 (0) | 2022.11.26 |
MVC, MVP, MVVM 패턴의 이해 (0) | 2022.11.18 |
이진 탐색법 (0) | 2022.11.15 |
postman api DOCS 링크 공유 (0) | 2022.11.11 |