일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 객체지향 프로그래밍 5가지 원칙
- java thread 예제
- dagger error
- 아파치 엔진엑스
- 다른 객체 리스트의 비교
- 안드로이드 스튜디오 custom dialog
- 변수
- LifeCycle
- apache nginx
- 아파치란
- 안드로이드 스튜디오 커스텀 다이얼로그
- hilt error
- 안드로이드 스튜디오 tts
- 자바 스레드 예제
- 안드로이드 스튜디오 인터넷 연결 확인
- Thread
- recyclerview item recycle
- 리사이클러뷰 아이템 재사용
- 안드로이드 스튜디오 인터넷 연결 안되어 있을 때
- AAC
- 디자인 패턴 예제
- 안드로이드 스튜디오 반복되는 레이아웃 코드
- edittext 연결
- Kotlin
- savedinstancestate
- 안드로이드 디자인패턴
- apache란
- java
- 안드로이드 스튜디오 style
- 이중for문 사용 안하기
- Today
- Total
Sam Story
엔진엑스 (NGINX) 본문

지난번 아파치에 이어 오늘은 엔진엑스에 대해 포스팅 해보려 한다.
엔진엑스 (NGINX) 란?
엔진엑스는 아파치와 마찬가지로 웹 서버 소프트웨어로 가벼움과 높은 성능을 목표로 한다.
웹 서버, 리버스 프록시 기능을 갖고 있다.
※ 프록시란?
최종 사용자와 다른 웹사이트 또는 서버 사이의 가교 역할을 하는 물리적 또는 가상 서버
엔진엑스는 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가진다.
이러한 구조는 아파치 HTTP 서버의 스레드/프로세스 기반 구조를 가지는 것과는 대조적이다.
때문에 엔진엑스의 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해준다.
엔진엑스의 구조
nginx는 master process와 woker process로 구성된다.
event-driven 모델을 사용하고 worker process 사이에 요청을 효율적으로 분배하기 위해
OS 에 의존적인 메커니즘을 사용한다.
※ Event : 새로운 요청

- Master process
● 설정 파일을 읽고 유효성을 검사한다.
worker process 관리
- Worker process
● 모든 요청을 처리
● 개수는 설정 파일에서 정의
● 정의된 프로세스 개수와 사용가능한 CPU 코어 숫자에 맞게 자동 조정

아파치(Apache) VS 엔진엑스(NGINX) 비교
Apache 요청 당 스레드 또는 프로세스가 처리 하는 구조 CPU / 메모리 자원 낭비 NGINX 보다 다양한 모듈 보유 PHP 모듈 등 직접 적재 가능 안정성 , 확장성 , 호환성 우세 동적 컨텐츠 단독 처리 가능 | NGINX 비동기 이벤트 기반으로 요청 CPU / 메모리 자원 사용률 낮음 Apache에 비해 모듈이 적음 대량 접속자 대응 가능 비교적 최신이라 성능이 좋음 동적 컨텐츠 단독 처리 불가능 |
위의 표로 간단하게 아파치와 엔진엑스의 차이점을 정리해 보았다.
가장 큰 차이라고 생각하는 점은 대량 접속자를 대응 할 수 있다는 점이다.
이는 아파치와 엔진엑스의 구조적인 차이에서 생기는 점인데
아파치 서버는 클라이언트의 요청이 들어오면 요청마다 Thread를 만들어서 처리한다.
즉 클라이언트 요청당 하나의 쓰레드가 처리하는 구조인데
사용자가 많아지면 쓰레드 생성도 많아지고 이로인해 메모리 , CPU 낭비가 심해진다.
이러한 구조적인 문제를 해결한 웹 서버가 NGINX 이다.
아파치보다 역사가 오래되지는 않았으나 아파치가 많은 한계를 보이고 있는 상황에
엔진엑스는 가볍고 높은 성능을 무기로 점유율을 빠르게 늘려나가 현재는 시장점유율 1위가 되었다.
사실 이러한 아파치의 한계를 엔진엑스가 해소하는게 엔진엑스'만' 사용해서 해소하는게 아닌
아파치의 부하 문제를 엔진엑스'로' 줄여준다는 점도 있다.
엔진엑스는 웹서버답게, 정적파일에 대한 요청을 본인이 모두 처리하고
동적인 파일을 요청받았을 때만 뒤에 있는 아파치 서버와 커넥션을 형성하는 방식으로 말이다.
지금까지 엔진엑스에 대해서 알아보았는데 공부를 해보면서 느낀점은
서로 적대적인 관계가 아닌 우호적인 관계라는 점이다.
경우에 따라 적절하게웹 서버를 구축하는게 좋다가 결국 핵심인것 같다.
'개발지식' 카테고리의 다른 글
객체지향 프로그래밍 (5) | 2024.09.23 |
---|---|
REST,REST API (0) | 2024.08.21 |
아파치 (Apache) (1) | 2024.05.01 |
동기 , 비동기 (Synchronous , Asynchronous) (0) | 2024.04.24 |
싱글스레드 , 멀티스레드 (Single Thread , Multi Thread) (0) | 2024.04.17 |