Apache — 프로세스/스레드 기반
Apache는 전통적으로 요청이 들어올 때마다 새로운 프로세스나 스레드를 생성해 처리하는 방식을 씁니다. 요청이 몰리면 그만큼 프로세스·스레드 수가 늘어나 메모리 사용량이 커지는 구조입니다.
Nginx — 이벤트 기반 비동기 처리
Nginx는 비동기·논블로킹 이벤트 기반 아키텍처를 씁니다. 적은 수의 워커 프로세스가 다수의 연결을 논블로킹 방식으로 동시에 처리하기 때문에, 동시 접속자가 많아져도 메모리·CPU 사용량이 상대적으로 완만하게 늘어납니다.
설정 방식의 차이
Apache는 `.htaccess` 파일로 디렉터리별 세부 설정을 유연하게 바꿀 수 있어 공유 호스팅 환경에서 강점이 있습니다. Nginx는 `.htaccess` 같은 동적 재해석 방식을 지원하지 않는 대신, 중앙 설정 파일 기반으로 예측 가능한 성능을 냅니다.
정적 파일 처리
정적 파일(이미지, CSS, JS 등)을 서빙하는 성능은 일반적으로 Nginx가 더 앞선다고 알려져 있습니다.
실무에서는
둘을 함께 쓰는 구성도 흔합니다. 앞단에 Nginx를 리버스 프록시로 두고, 뒷단 애플리케이션 서버 앞에서 정적 파일 처리와 부하 분산을 맡기는 방식입니다.