Nginx는 웹서버라고 알고 있었다.
근데 아래와 같은 질문에 제대로 답을 못하고 있는데, 의문이 해소될정도로 간단히 알아보려고 한다.
- 로드밸런싱이랑 게이트웨이로도 역할을 한다?
- Nginx는 어디에 위치해야 하는걸까? (ex 프론트 서버 앞쪽, WAS 앞단?)
- 프론트 서버(ex React)와 Nginx를 둘다 웹서버라고 부를 수 있는건가? 둘이 다른 건가?
- 애초에 React, Vue 등을 통한 정적 리소스 제공해주는 프레임워크는 웹 서버인가? (React == 웹서버..?)
🌈 Nginx는 어떤 역할까지 할 수 있을까?
Nginx가 어떤 역할을 할 수 있는지 알아보자.
대부분의 기술들은 특정 기능을 위해 생겨났을 테지만, 추가적으로 여러 기능들도 지원하게 되면서 짬뽕되는 경우가 많다.
ex) 톰캣을 사용하는 스프링 WAS를 보더라도 사실 WebServer의 기능도 자체적으로 수행할 수 있음
웹서버로의 동작
기본적으로 Nginx는 웹 서버이기 때문에 html, css, js 등의 정적 리소스를 서빙해줄 수 있다.
- React, Vue는 동적으로 SPA(싱글 페이지 애플리케이션)를 구현할 수 있는 프레임워크이다.
- React, Vue 프레임워크로 만든 소스코드를 빌드하면 정적파일이 생성된다.
- Nginx를 통해 정적 파일을 클라이언트(브라우저)에게 전달해줄 수 있다.
- 이때 이 빌드된 정적파일은 어디에 저장되어있는데? 아마 클라우드(AWS 환경의 S3 같은 정적 파일 저장소) 에 있을 것 같다
리버스 프록시로 동작
다음은 브라우저에서 빌드파일을 전달받고, REST API 방식으로 WAS에게 요청을 보낼 때 Nginx를 리버스 프록시로 사용할 수 있다.
그렇다면 위에서 React 등으로 만든 정적 리소스파일을 제공해주는 Nginx도 리버스 프록시 역할을 한다고 할 수 있을 것 같다.(정적 파일이 저장되어 있는 AWS S3의 주소를 브라우저 입장에서 모르기 때문에) -> 이 부분은 틀린 말은 아닌지 확인해봐야 겠다- 브라우저가 WAS의 주소를 모르기 때문에 보안에 좋다고 할 수 있음
로드 밸런서로 동작
Nginx는 그 자체로 로드밸런서의 역할을 수행할 수 있다.
- 아래의 경우는 리버스 프록시의 역할 + 로드밸런싱 역할을 한다고 볼 수 있다.
- 서버를 분산시키면 부하 분산의 역할 말고도, 무중단 방식으로 배포할 수 도 있다.(서버 하나를 갈아끼울(?)때 다른 서버로 요청하면 됨)
기타
위의 방식 이외에도 아래의 수많은 기능들을 제공한다
- 캐싱 : 자주 요청되는 리소스에 대해 캐싱
- 게이트 웨이 : 서로 다른 역할을 하는 여러 서버로 라우팅 해줌
- 여러 서버들간의 공통 중간다리 역하을 할 수 있기 때문에 "로깅", "인증" 등의 기능 사용가능
- 게이트 웨이의 장점중 하나가 공통 기능을 수행할 수 있다 였는데, Nginx도 게이트웨이로써의 라우팅이 가능하므로, 로깅/인증과 같은 공통 기능도 제공하는 것 같다.
- TLS를 적용하여 HTTPS로 사용
Nginx는 오픈소스이고 계속 발전해온 것 같다.
필요에 따라 계속해서 기능이 추가될 수 있고, 위에서 알아본 내용말고도 더욱 복잡하고 세밀한 기능을 제공해줄 것으로 생각된다.(Nginx 쿡북과 같은 책을 보면 기능이 아주 다양하고 많음)
프로젝트에 로드밸런싱, 게이트웨이, 보안 등의 기능이 필요하다면 Nginx 를 한번 고려해보면 좋을 것 같다.
[참고자료]
https://product.kyobobook.co.kr/detail/S000213834501
'궁금한 내용은 바로 알아보기!' 카테고리의 다른 글
[모호하면 바로] HTTP Method의 Patch 동작방식? (0) | 2024.09.21 |
---|---|
[모호하면 바로] JWT(토큰)의 보안 취약점과 해결 방법? (0) | 2024.09.18 |
[모호하면 바로] 해시함수가 머야? 인코딩이랑의 차이는? (0) | 2024.09.18 |
[모호하면 바로] 인덱스가 왜 B트리를 사용할까? (0) | 2024.09.18 |
[모호하면 바로] CORS 알아보기 (0) | 2024.09.18 |