HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/
🟩
Nginx
🟩

Nginx

progress
Done
Tags
DevOps
Apach와 Nginx 이야기💨What특징기능 제공동작원리 (Master-Slave Architecture)❓Why📌 REFER

Apach와 Nginx 이야기

  • Nginx가 등장하기 전에는 Apach를 웹서버로 많이 사용하였지만 점차 늘어나는 트래픽을 감당하기 어려웠고 C10K(Connection 10000 Problem) 문제가 발생하였다.
    • C10K : 하나의 웹 서버에 1만개 이상의 클라이언트 접속을 처리하지 못하는 문제
  • C10K 문제가 발생한 원인
    • Pre-Fork 방식의 문제
      • 메모리 낭비 심함
      • 확장성이라는 장점이 프로세스 리소스 양을 늘려 무거움.
      • 문맥교환 비용이 비쌈
      •  
apach (호환성과 확장성이 좋다)
  • 특징
    • prefork 방식
      • 미리 프로세스 로드해놓는 방식
    • 모듈 확장성이 좋다.
  • C10K 문제 -> 수많은 동시 커넥션을 유지하기엔 버거움.
    • 동시에 연결된 커넥션 수가 최대 만개 밖에 못한당.
    • 하드웨어는 문제가 없없음.
  • 문제점
    • 커넥션 요청에 대한 많은 프로세스 (oom을 유발)
    • 아파치 확장성의 특징을 가지고 있지만 꽤나 리소스를 차지함.
    • cpu 부하 (컨텍스트 스위칭 무거움..)
  • [현 시점] MPM 모듈 방식을 제공
    • 워커 쓰레드로 처리하는 방식, prefork 방식 중 선택해서 사용
    •  
nginx (동시 커넥션 문제 해결!) → 동시 커넥션, 처리하는 초당 요청 수 도 월등 가벼움
  • 정적 파일 요청 스스로 처리
  • Event Driven 구동 방식 (동작원리)
    • master process - worker process
    • listen 소켓 배정
    • 하나만 담당하지 않는다
      • 커넥션 생성, 제거, 새로운 요청을 처리하는 것을 이벤트라고 부름
        • notion image
    • 이벤트는 큐에 담긴 상태에서 os 커널이 워커에게 전달함
    • 비동기 방식으로 대기 하나의 스레드로 이벤트를 꺼내서 처리함
      • 만약 이요청중 하나가 오래 걸린다면 (i/o)
      • 따로 쓰레드 풀에 있던 걸로 처리
      워커 프로세스는 cpu 코어 수만큼 생성
      notion image
    • 프로세스의 컨텍스트 스위칭을 대폭줄일 수 있다.
      • 코어가 담당하는 프로세스를 바꾸는 횟수를 줄일 수 있다.
      • cpu가 굳이 이런 부가적인 일을 하지 않아도 되는 거다
  • nginx 모듈을 만들기 까다롭다는 단점이 있다.

💨What

  • 트래픽이 많은 웹사이트의 확정성을 위해 개발된 경량(가벼운 Context-Switching)의 고성능 웹서버(Event-Driven)이다.
  • Nginx는 적은 자원의 사용으로 높은 성능과 높은 동시성을 목표로 만들어 졌다.
  • 요청에 따른 메모리 사용량 비교
notion image
  • 요청에 따른 처리량 비교
    • notion image

특징

  • 하나의 워커 마다 초당 1000개의 request 수행할 수 있음
  • 아파치와 달리 요청당 프로세스를 생성하지 않는다.
    • CPU Core 수와 Worker Proceess 갯수가 같다
  • 여러가지로 구성할 수 있다.
 

기능 제공

  • 웹 서버
  • 로드 벨런서
  • SSL Termination ( 클라이언트와 https 통신, 서버와는 http 통신)
  • 캐싱
  • HTTP / 2
 

동작원리 (Master-Slave Architecture)

notion image
  • Nginx는 Single Thead이므로 해당 Worker는 CPU core 수와 같다.
    • 마스터 프로세스
      • 워커 프로세스의 설정을 담당.
    • 워커 프로세스
      • 실제로 일을 하는 프로세스
      • 생성될 때 마다, 각자 지정된 Listen 소켓을 배정받는다.

❓Why

🌕
웹 어플리케이션의 성능을 높이기 위해 사용해야한다.
  • 쉬운 설치 및 유지보수
  • 사용자 요청에 따른 응답시간 단축
  • 부하 분산
  • 확장성
 

📌 REFER

  • 외국 사이트
What is Nginx?
In this article, we're learning about What is Nginx and important facts about Nginx. And here I am planning to give you all the basic knowledge to start working with Nginx. Here we are discussing, What is a web server? What is Nginx? Nginx Architecture and why you should learn, use Nginx?
What is Nginx?
https://medium.com/geekculture/what-is-nginx-2edfdad3722b
What is Nginx?
  • 한 사이트
Apach VS Nginx 비교 잘된 블로그
Nginx와 Apache
우테코 팀 프로젝트에서 Nginx를 도입했다! Nginx가 웹서버로 좋다고 하는데 왜 그런지 Apache와 비교하며 좀 더 자세히 알아보자. Web Server : 정적 데이터 처리 ↔ WAS : 동적 데이터 처리 우리 프로젝트에서는 Reverse Proxy 역할을 한다. Proxy Server : 클라이언트와 서버간의 중계 서버 캐시, 보안 (SSL https 적용한 것), 트래픽 분산 (로드 밸런싱) 기능 Forward Proxy VS Reverse Proxy Forward Proxy와 Reverse Proxy 구분 기준은 위치!
Nginx와 Apache
https://velog.io/@moonyoung/Nginx%EC%99%80-Apache
Nginx와 Apache
코기 동영상 정리
꾸준히 성장하는 개발자스토리
올해 캡스톤 프로젝트에서 NGINX를 사용하게 됐는데 어떤 것인지 잘 몰라서 공부하기로 했다. 트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반구조의 웹 서버 프로그램이다. Web Server : 단순히 정적 파일 응답 WAS(Web Application Server) : 클라이언트 요청에 대해 동적 처리가 이뤄진 후 응답 1995년 유닉스 기반으로 만들어진 최초의 웹서버 NCSA HTTPd 가 있었다.
꾸준히 성장하는 개발자스토리
https://ssdragon.tistory.com/60
꾸준히 성장하는 개발자스토리
prefork, worker 방식
넌 뭐니 NGINX?
NGINX란 러시아의 한 개발자가 apache의 C10K 문제 (한 시스템에 동시접속자 수가 1만명이 넘어갈 때 효율적인 방안)를 해결하기 위해 Event-Driven 구조로 만든 웹 서버 SW 이다. 우리가 개발한 응용 프로그램이 OSI 7 Layer 중 application Level에서 동작하고 그 아래 Level에서 NGINX 같은 웹 서버가...
넌 뭐니 NGINX?
https://medium.com/sjk5766/%EB%84%8C-%EB%AD%90%EB%8B%88-nginx-9a8cae25e964
넌 뭐니 NGINX?
nginx reactor pattern
[번역] Java Reactor Pattern
해당 글은 아래의 Reactor Pattern Explained 시리즈를 번역하였습니다. 서버가 동시에 요청(이벤트)을 받을 때, 보통 요청을 처리하기 위한 이벤트 리스너를 각 스레드마다 할당해 처리하곤 합니다. 요청마다 처리를 위해 이벤트 리스너를 별도의 스레드로 만들어 사용하는 것의 단점은 컨텍스트 전환(context switching)의 오버 헤드 가 크다는 것입니다.
[번역] Java Reactor Pattern
https://jongmin92.github.io/2019/03/05/Java/java-reactor-pattern/
[번역] Java Reactor Pattern
nginx official document
nginx worker request socket method - Google Search
websockets proxy node js redis angular thread pool reverse proxy server socketio connection nginx reverse
nginx worker request socket method - Google Search
https://www.google.com/search?q=nginx+worker+request+socket+method&tbm=isch&ved=2ahUKEwi1gpb1gZv6AhVUzmEKHQUECMEQ2-cCegQIABAA&oq=nginx+worker+request+socket+method&gs_lcp=CgNpbWcQAzoECCMQJ1CkHlj9QmCXS2gGcAB4AIABkQGIAYUKkgEDMi45mAEAoAEBqgELZ3dzLXdpei1pbWfAAQE&sclient=img&ei=cFAlY7WKEtSchwOFiKCIDA&bih=1210&biw=1072&rlz=1C5CHFA_enKR997KR997
nginx worker request socket method - Google Search