웹 서버를 세팅하면서 제일 많이 들어보셨을 Nginx와 Apache에 대해 알아보는 시간을 가져보도록 하겠습니다.
먼저 이 두가지를 알기위해 웹 서버의 기본적인 상식부터 정리해봅시다.
웹 서버?
웹 서버라는 것은 우리가 가장 많이 이용하는 웹 브라우저와 같은 클라이언트들로 부터 HTTP요청을 받아들이고,
HTML 문서와 같은 웹페이지를 반환하는 일종의 컴퓨터 프로그램입니다.
웹 서버에 주된 기능으로는 웹 페이지를 클라이언트로 부터 전달해주는 역할을 하는 것인데
주로 HTML, CSS , Javascript, Image(정적인 정보) 가 클라이언트로 전달됩니다.
주된 기능은 콘텐츠를 제공하는 것이지만 클라이언트로부터 콘텐츠를 전달 받는 것도 웹 서버의 기능중 하나이며
대표적인 웹서버는 llS, Apache, Nginx, GWS 등이 이에 속합니다.
웹 서버에는 정적인 방식과 동적인 방식 두가지가 있는데
- 정적인 웹 서버
단순히 HTML 문서만을 사용자에게 제공하기 떄문에 아파치 웹 서버 하나면 됩니다. - 동적인 웹 페이지
사용자의 요구에 따라서 다양한 웹 페이지를 제공해주고, 이를 구성하기 위해 php와 mySQL 데이터 베이스를
연계해 사용합니다. (APM, 리눅스에서는 이것을 LAMP라고도 부른다 합니다)
정리 하자면
- HTML 코드 안에는 PHP언어가 포함되어 있다.
- 웹 서버(Apache)에서 PHP코드를 해석하기 위해서 정적/동적인 모듈을 장착해주어야 함
- 서버에서 PHP 코드를 해석해서 동적인 웹페이지를 생성할 수 있다.
Apache
아파치는 HTTP 표준을 준수하도록 구축된 오픈 소스 형식의 웹서버로 1995년 이후로 가장 인기있는 웹 서버였습니다.
아파치는 다음과 같은 장점을 가지는데
- 현시점까지 오래 사용되어 온 만큼 거의 모든 OS환경에서 실행을 지원해주고, 다양한 모듈을 가지고 있다.
- 프로세스 중심 접근 방식으로 클라이언트 요청을 제공해준다.
- 클라이언트 요청을 처리하기 위해서 멀티 스레드 방식을 따른다.
- 자체적으로 동적 컨텐츠를 처리한다.
- Apache는 Apache재단에서 제작한 HTTP 서버로써 다양한 기능들이 추가되었는데, 구축이 쉽다는 이유로
많이 쓰이고 있다. - 하지만 Apache 자체만으로는 엄청 무겁고, Squid와 함께 Slowloris(서비스 거부 공격 도구) 취약점이 발견되었기에
보통 프로그래밍 능력이 능숙한 사람들이나, 대형사이트 운영자는 Nginx, llS를 주로 사용한다.
그러나 멀티 스레드 방식을 사용해 비동기적 처리가 어렵기 때문에 웹 트래픽이 많아질 경우 여러 요청을
동시에 처리할 수 없습니다.
Nginx
Nginx는 최신 웹 요구를 충족하도록 설계된 오픈 소스 웹 서버로
효율성에 중점을 두고 있고, 단일 스레드 방식을 사용합니다.
Nginx에서는 다음과 같은 일들을 처리해 주는데
- 이벤트 중심 접근 방식으로 클라이언트 요청을 처리한다.
- 비동기적 처리가 유연해 제한된 자원으로도 여려 요청을 동시에 효율적으로 처리할 수 있다.
- 마찬가지로, 단일 스레드를 통해서 여러 연결을 처리할 수 있다.
- 최소한의 자원만으로도 웹 서버의 아키텍처를 개선하기 위한 독립적 HTTP 서버로 배치할 수 있다.
그러나 동적인 컨텐츠는 처리할 수 없기에 이를 처리해주기 위한
외부 프로세서로 요청을 전달해주고
렌더링 된 컨텐츠를 전송받을 때까지 기다려 주어야 합니다.
따라서 프로세스 속도 저하가 발생할 수 있습니다.
그럼 둘중에 무엇을 사용해야 하나?
서로 다른 차이점을 가지고 있는 2가지의 프로그램 중 현재까지 가장 최신적인 모듈은
제가 생각하기에는 Nginx라고 생각됩니다.
Nginx자체는 AWS를 통해 세팅할 수 있고 제가 생각하기에 가장 트렌드라고 생각되는
웹 서버로 생각하고 있습니다.
둘 중에 무엇을 사용하냐할때
- 웹 서버에 다양한 모듈 동작이 필요할 경우 Apache
- 트래픽이 많은 웹 사이트인 경우 Nginx
두 웹 서버를 함께 사용할 경우에는 Nginx를 Apache 앞에 리버스 프록시 서버로 배치할 수 있습니다.
결론
Apache는 안전성, 확장성, 호환성 등의 장점이 존재하고, Nginx에는 성능이 우세하다는 장점이 있습니다.
전체적인 개발의 목표와 요구사항의 따라서 웹서버의 장단점이 명확하기에
현재 사이트를 효율적으로 운영해주기 위해서는 적합한 서버 유형을 선택하는 것이 중요합니다.
Reference
'웹서버 > Apache' 카테고리의 다른 글
[Apache] Windows 10 64bit 환경 Apach 설치 및 설정법 (0) | 2022.02.26 |
---|