Nginx 개념
Nginx란
높은 성능과 안정성 그리고 현재 가장 많이 사용되고 있는 웹서버이다. Apache 같은 웹 서버와 비교하면 더 빠르고 가볍고, 대규모 애플리케이션 처리에 적합하다는 장점이 있다. Nginx를 이해하기 위해 4가지 용어의 이해가 있어야 한다.
1. 클라이언트
클라이언트란 서비스를 이용하기 위해 네트워크를 통해 요청을 보내는 주체를 말한다.
2. 웹 서버
웹 서버는 클라이언트의 요청에 따라 HTML, CSS, JS 이미지 파일과 같은 정적 파일을 응답하여 제공하는 소프트웨어를 말한다. 웹 서버는 HTTP 프로토콜을 사용하여 클라리언트와 통신한다. 대표적인 웹 서버로는 Nginx, Apache 등이 있다.
3. WAS(Web Application Server)
Servlet을 하면서 배웠던 WAS 그 땐 톰캣을 활용했다.
WAS는 클라이언트 요청에 대해 동적인 처리를 담당하는 영역이다. 웹 서버와 달리 애플리케이션 로직을 실행할 수 있도록 구성되어 있다. 예를 들어 회원가입이나 로그인 등의 로직을 처리하는 영역이 WAS 이다. 또한 데이터베이스 연동, 트랜잭션 관리, 보안, 로깅 등의 긴으도 제공한다. 이를 통해 웹 애플리케이션의 안정성과 성능을 향상키키며, 개발자들은 애플리케이션 개발에 집중할 수 있다. 대표적으로는 Tomcat 이 있다.
4. DB(데이터베이스)
DB는 조직이나 개인이 필요한 정보를 체계적으로 저장, 관리하고 검색할 수 있는 시스템이다.
웹 서비스 흐름
클라이언트 -> 웹 서버 -> WAS -> DB 순으로 요청이 되고 DB -> WAS -> 웹 서버 -> 클라이언트 순으로 응답이 된다.

출처 : https://blog.naver.com/gi_balja/223028077537
웹 서버를 사용하는 이유
1. WAS 부담을 줄여주기 위해 사용된다. WAS는 로그인, 회원가입, 개인정보 수정 등 동적 작업을 처리하는 것만으로도 작업량이 많다. 이에 HTML, CSS, JS, 이미지 등 정적인 파일을 클라이언트에게 전달하는 역할을 웹 서버에게 위임함으로써 WAS 작업 부담을 덜어준다.
2. 보안 기능을 제공한다. 웹 서버는 보안 기능을 제공하여 웹 페이지에 대한 접근을 제어할 수 있다. 예를 들어, 웹 서버는 SSL/TLS 프로토콜 콜을 사용하여 데이터를 암호화하고, 액세스 제어, 웹 방화벽 등의 보안 기능을 제공하여 웹 사이트를 보호할 수 있다.
3. 높은 성능을 제공한다. 웹 서버는 대부분 비동기 처리 방식을 사용하여 높은 성능을 제공한다. 예를 들어, Nginx, Apache 등의 웹 서버는 이벤트 기반, 멀티 프로세싱, 스레드 풀 등의 기술을 사용하여 수천 대의 클라이언트 요청을 동시에 처리할 수 있다.
Nginx(웹 서버)를 사용하는 이유
1. 높은 성능과 적은 메모리 사용
Nginx는 비동기 I/O 처리 방식을 사용하여 높은 성능을 제공한다. 이를 통해 대규모 웹사이트에서도 빠른 응답 시간을 보장할 수 있다. 또한 Nginx는 적은 메모리 사용량으로도 높은 성능을 제공한다. 이를 통해 서버 운용 비용을 절감할 수 있다.
2. 리버스 프록시(Reverse Proxy) 사용이 가능
프록시(Proxy)의 사전적 정의는 "대리"이다. 인터넷 접속을 할 때 보안상의 문제로 직접 주고받을 수 없을 때 그 사이의 중계기로서 대리 로 통신을 수행하는 기능을 프록시라고 말한다. 이렇게 중계 기능하는 것을 우리는 프록시 서버 라고 부른다. 프록시는 크게 포워드 프록시와 리버스 프록시로 구분된다.
포워드 프록시 는 클라이언트와 인터넷 그 사이에 있는 영역을 말한다. 클라이언트가 어떠한 정보를 요청하면 포워드 프록시가 이를 대신 받아서 서버에게 전달을 한다. 이후, 서버의 응답 또한 포워드 프록시가 대신 받아 클라이언트에게 전달한다.
포워드 프록시를 사용하면 클라이언트의 IP 주소가 웹 서버에 노출되지 않는다. 따라서, 클라이언트의 위치나 신원을 식별하는 것이 어려워져 보안이 강화된다. 또한 접근 제어를 수행할 수 있다. 포워드 프록시를 사용하여 특정 IP 주소, 도메인 또는 URL에 대한 접근을 제한할 수 있다.
마지막으로 미디어 스트리밍을 지원할 수 있다. 미디어 파일은 일반적으로 큰 용량을 가지고 있기 때문에, 웹 서버에서 직접 전송하는 것은 효율 적이지 않는다. 포워드 프록시를 사용하여 미디어 파일을 캐시하고, 클라이언트에게 빠르게 제공할 수 있다.

출처 : https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/
리버스 프록시 는 인터넷과 백엔드 그 사이에 있는 서버 영역을 말한다. 예를 들어 WAS로 사용하고 있는 서버가 여러 대 있다고 가정을 해보면클라이언트가 http://example/blog1, http://example/blog2으로 접근을 했다면 blog1은 A서버로 전달하고 blog2는 B 서버로 전달하여 요청에 해당하는 웹 서버로 길을 분배할 수 있다. 이를 로드 밸런싱 이라고 한다.

출처 : https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/
그리고 캐싱 서버로도 이용이 가능하다. 예를 들어 클라이언트가 이미지를 요청했을 때 처음에는 서버에서 가져오지만 이후에는 동일한 요청이 있다면 캐시 서버에서 가져와 클라이언트에게 전달해준다. 이로인해 사이트의 접속 속도가 빨라진다.
마지막으로 보안 효과도 있다. WAS가 데이터를 응답할 때는 기기의 명칭이나 주소 등 실제로는 민감한 정보들이 담겨져 있다. 이러한 정보들을 중간에 숨겨줌으로써 보안을 높일 수가 있다.
이렇게 전체적인 개념을 볼 수 있다.