웹 서버 Apache보다 Nginx를 사용하는 이유

Gom La·2023년 4월 4일
1

IT 지식

목록 보기
7/9
post-thumbnail
post-custom-banner

Java로 프로그래밍을 처음 시작할때는 웹서버는 Apache, WAS는 Tomcat으로 웹 사이트를 구현했었다.

전 직장에서도 웹 서버-Apache, WAS-Tomcat을 사용하고 있었지만, Python으로 프로젝트를 배포하며 알게된 것은 최근에는 Nginx 를 많이 사용한다는 것이다.

📌 무슨 이유로 Apache보다 Nginx를 더 사용하는 걸까?

그 이유는 바로 Nginx가 트래픽이 많은 웹 사이트에 더 적합하기 때문이다.

Nginx는 대용량 트래픽을 처리하기 위해 가벼움과 높은 성능을 목표로 하는 경량 서버이다.

그런데 웹 서버는 정적 파일의 제공을 목적으로 사용하던 Apache를 사용하던 시기와 달리 최근에는 리버스 프록시, 로드 밸랜서, 메일 프록시 및 HTTP 캐싱 등 전체 범위에서 서버 작업을 처리하는 웹 서버로 발전하였다.

다양한 기능과 클라이언트의 확장으로 대용량 트래픽을 처리해야하는 요즘 서비스는 무겁고 대용량 트래픽을 처리하기 어려운 Apache와는 맞지 않기 때문에 Nginx가 점점 더 많이 사용되고 있다.


🔖 Apache와 Nginx의 차이점

Apache보다 Nginx를 더 많이 사용하는 이유는 간략하게 살펴보았다.

이제 두 웹 서버의 차이점을 상세히 비교해 보도록하자.

➤ 1. 설계 아키텍처

Nginx

  • 이벤트 중심 접근 방식 으로 하나의 스레드 내에서 여러 요청을 처리하는 구조
  • 비동기 Event-Driven 구조 : Event Handler에서 비동기 방식으로 먼저 처리되는 요청을 진행
  • 코어 모듈이 Apache보다 적은 리소스로도 많은 트래픽을 효율적으로 처리 가능

Apache

  • 프로세스 기반 접근 방식 으로 하나의 스레드하나의 요청을 처리하는 구조
  • 매 요청마다 스레드를 생성 및 할당해야 하기 때문에 리소스를 많이 잡아먹음

➤ 2. 성능

정적 컨텐츠

  • 서버PC의 디스크에 저장하는 파일 기반 방법으로 정적 컨텐츠 제공
  • 설계 아키텍처 구조상 Nginx가 적은 비용으로 효율적인 서비스 제공

동적 컨텐츠

  • 두 웹 서버 모두 서버 자체에서 동적 컨텐츠 처리 가능
  • Nginx는 SCGI핸들러와 FastCGI 모듈을 사용해서 동적 컨텐츠 제공할 수 있음
  • 동적 컨텐츠는 두 웹 서버 성능이 비슷함

➤ 3. OS 지원

Nginx

  • 거의 모든 Unix 계열 OS 지원
  • Windows는 부분적으로 지원

Apache

  • Linux 및 BSD를 포함한 모든 Unix 계열 OS 지원
  • Windows 모두 지원

➤ 4. 분산/중앙 집중식 구성

Nginx

  • 추가 구성을 허용하지 않음
  • 권한이 없는 사용자가 웹 사이트의 특정 측면을 제어할 수 없지만 추가 구성을 제공하지 않음으로 성능 향상
  • 디렉토리 구성을 허용하지 않음으로 .htaccess 파일을 검색하고 사용자가 만든 요구 사항을 해석할 필요 없기 때문에 Apache보다 빠르게 요청을 처리할 수 있음

Apache

  • .htaccess 파일을 통해 디렉토리 별로 추가 구성을 허용
  • 이로 인해 권한이 없는 사용자가 웹 사이트의 특정 측면을 제어할 수 있음

➤ 5. 요청을 처리 및 해석하는 방법의 차이

Nginx

  • 요청을 해석하기 위해 URI를 전달
  • URI로 전달함으로써 웹 서버뿐만 아니라 프록시, 서버, 로드 밸런서 및 HTTP 캐시로 쉽게 동작 가능
  • 서버에서 클라이언트로 데이터가 전송되는 속도가 Apache보다 더 빠름

Apache

  • 요청을 해석하기 위해 파일 시스템 위치 전달
  • URI위치를 사용하지만 일반적으로 더 추상적인 디렉토리 구조를 사용

➤ 6. 기능 모듈의 차이

Nginx

  • 타사 플러그인 과정으로 선택되고 컴파일되기 때문에 동적으로 모듈을 로드할 수 없음
  • 따라서 사용하려는 기능만 선택해서 서버를 실행 = 가벼움

Apache

  • 동적으로 로드 가능한 다양한 60개의 공식 모듈을 제공
  • 모든 모듈을 가지고 서버가 실행되지만 실제 사용되는 모듈은 소수임 = 무거움

➤ 7. 유연성

Nginx

  • 아직까지는 동적 모듈과 로딩을 지원하지 않음

Apache

  • 동적 모듈과 로딩을 지원함

➤ 8. 보안

두 웹 서버 모두 C언어 기반으로 확장된 보안을 제공한다.

하지만 Nginx 코드가 더 작기 때문에 미래 지향적인 보안 관점에서 장점을 가진다.


🔖 결론

Apache는 .htacess 파일을 제공하기 때문에 이를 활용하거나 Nginx에게 없는 핵심 모듈을 사용할 경우 Apache를 사용하며, 빠른 정적 컨텐츠를 처리하고 싶고 대용량 트래픽을 처리하는 웹 사이트인 경우는 Nginx를 사용하면 된다.

또한, 두 서버를 함께 사용해도 된다. Apache 앞단에 Nginx를 프록시 서버로 활용할 수 있다.

🔖 참고

https://sorjfkrh5078.tistory.com/289

profile
인생 개발자 라곰!!
post-custom-banner

0개의 댓글