Nginx는 간단하게 말하자면 경량 Web Server
클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 함
Web Server & WAS
Web Server는 무엇일까?
Web Server란 이미지, 동영상, 자바스크립트, HTML, 등 다양한 문서를 제공하는 서버 시스템
주로 HTTP 통신 프로토콜을 통해 리소스를 전달하지만 FTP, SMTP 와 같은 다른 프로토콜도 지원하는 것이 대부분
Web Server의 역할은?
- 데이터 전송
HTML 텍스트 파일을 비롯하여 이미지나 음성 데이터 같은 정적인 컨텐츠를 웹 클라이언트에 전송
이를 이용하면 최근 유행하는 클라이언트 사이드 랜더링(React, Vue, Angular 등)에 의해 생성된 빌드 파일(정적 파일)을 제공할 수 있음- 어플리케이션 실행
위 아키텍처와는 다르게 Web Server 내에 PHP 와 같은 모듈을 내장해서 Web Server가 직접 Application Server 를 실행할 수 있음
이를 이용해 이미지 압축 등의 기능을 사용할 수 있게 됨- 프록시 처리
클라이언트의 요청을 Application Server 로 전달하는 역할을 함
이를 이용해 캐시 처리를 할 수 있고 로드 밸런싱 기능, 암호화 기능 등 처리할 수 있으며, Web Server가 사용되는 가장 큰 이유 중 하나이기도 함
Nginx는 여러기능을 모듈 단위로 개발하여 Nginx를 컴파일할 때 필요한 모듈들만 조합해서 사용할 수 있다.
하드웨어 자원을 활용하는 Nginx의 특성상 읽기/쓰기가 자주 일어난다면 Apache가 더 유용할 수 있다.
만, 대부분의 Web Server에서는 하드웨어 읽기가 발생하지 않는 캐시 제공, 리버스 프록시 서버, 로드 밸런서 등의 역할을 담당하므로 Nginx가 더 선호된다고 볼 수 있다.