Nginx는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다.
웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다.
위키백과 : Nginx
경량 웹 서버
클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용
HTML
, CSS
와 같은 정적 데이터를 요청하면 HTTP 프로토콜을 준수하여 웹 브라우저에 전송하는 역할을 한다.
- Web Server
웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(html
jpeg
css
등)를 제공하는 컴퓨터 프로그램- WAS (Web Server + Web Container)
DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
Apache
보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.웹 서버 | Apache | Nginx |
---|---|---|
동작 방식 | 스레드 / 프로세스 기반 | 비동기 이벤트 기반 |
구조 | 요청 하나당 스레드 하나가 처리 (요청마다 새로운 스레드 생성) | 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 처리 |
성능 | 사용자 증가, CPU / 메모리 사용 증가 시 성능 저하 | 단일서버 동시연결 가능, 적은 자원으로 효율적인 운용(스레드 생성비용 ❌) |
하나의 Master Process
와 다수의 Worker Process
로 구성
Master Process
는 설정 파일을 읽고, 유효성을 검사하며 Worker Process
를 관리함
Worker Process
에서 모든 요청을 처리
Nginx는 이벤트 기반 모델을 사용하고, Worker Process
사이에 요청을 효율적으로 분배하기 위해 OS에 의존적인 메커니즘을 사용한다.
Worker Process
의 개수는 설정 파일에서 정의 -> 정의된 프로세스 개수와 사용 가능한 CPU 코어 숫자에 맞게 자동으로 조정
출처 : https://icarus8050.tistory.com/57
리버스 프록시 서버는 중계 기능을 하는 하는 서버. 클라이언트가 서버를 호출할 때 직접 서버에 접근 하는 것이 아니라 리버스 프록시 서버를 호출하게 되고 -> 리버스 프록시 서버가 서버에게 요청을 하고 -> 응답을 받아 클라이언트에 전달함.
클라이언트는 리버스 프록시 서버를 호출하기 때문에 실제 서버의 IP를 감출 수 있고, 이를 통해 보안을 높일 수 있다는 장점이 존재.
로드밸런서는 부하 분산이라는 뜻, 서버에 가해지는 부하를 분산해주는 역할을 하는 것이다.
이용자가 많아서 발생하는 요청이 많을 때, 하나의 서버가 아닌 여러대의 서버를 이용하여 요청을 처리하게 하는데, 이때 서버의 로드율과 부하량 등을 고려하여 적절하게 서버들에게 분산처리 하는 것을 로드 밸런싱이라고 함.
하나의 서버가 멈춰도 서비스가 중단 되지않고 다른 서버가 서비스를 계속 유지할 수 있는 무중단 배포가 가능하다는 장점이 있다.
Nginx 환경설정, 셋팅 예제 : https://whatisthenext.tistory.com/123
https://tecoble.techcourse.co.kr/post/2021-07-30-web-server-and-nginx/
https://whatisthenext.tistory.com/123
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://icarus8050.tistory.com/57