Nginx - web server

이재문·2022년 3월 11일
0

프로젝트를 하면서 검색할 때 Nginx가 많이 보였다. 그래서 관심이 갔지만 찾을 기회가 많지 않았다. 이번에 혼자 프로젝트를 진행하면서 여러가지 기술을 써 보고 싶어 DevOps에 관련된 스택을 공부했다.

Nginx란

Nginx는 '웹 서버'이다.
처음 Nginx를 봤을 때 이런 의문이 들었다.

웹 서버?
내가 지금까지 Django로 만든 코드는 웹 서버아닌가?
왜 웹 서버를 2개를 여는거지?

Web Server

결론부터 말하면 Django, Nginx 모두 웹 서버라고 불린다.
하지만 정확하게 말하면 Django, Node.js등은 WAS(Web Application Server),
Nginx, Apache 등은 Web Server로 구분된다.
이 둘의 차이는 동적과 정적인 응답하는 것으로 나눌 수 있다.

처리 순서는 아래와 같다.

Client -> WS -> WAS -> DB

WS, WAS 왜 따로 나눠서 쓰는 걸까?

WAS와 WS를 나눠서 사용하는 이유는 WAS의 부담을 줄이기 위해서다.
WAS는 처리할 것이 너무 많다. 이때 Nginx가 정적인 간단한 데이터처리를 해줌으로써 WAS는 여유가 생긴다.

Nginx가 왜 좋은가?

  1. 타 WS에 비해 빠르고, 좋다.
    - 동일한 3000개의 요청을 받는 메모리 사용량과 적은 요청을 받을 때의 메모리 사용이 같다.


    첫 번째 그래프를 보면 동시 접속자 수가 변해도 요청시간이 크게 변하지 않는것을 알 수 있다.
    두 번째 그래프를 보면 요청량이 증가해도 메모리 사용량은 변화 없다.
    - Nginx, Using NGINX and NGINX Plus as a Web Server Link

  2. 리버스 프록시 지원
    • 로드밸런싱 - 서버 내부의 상황을 알고, 부하에 맞춰 분산처리를 해 준다.
    • 보안 - Nginx 이전의 내부 서버를 숨겨준다.
  3. SSL 지원
    • Https 인증서를 설정하여 확인이 가능하다.
  4. Web Page 접근 인증
  5. 압축
    • 여러가지 텍스트(text)파일을 압축해서 전달 가능하다.
  6. 비동기 처리
    • 타 서버는 클라이언트의 요청 하나당 프로세스 하나씩 할당 - 동기
    • Nginx는 이벤트루프를 이용해 요청을 기다리는 동안 다른 요청 수행 가능
    • 80(Http)번 포트로 들어와도 443(Https) 포트로 연결 해 준다.

이번 프로젝트에서 Nginx를 꼭 사용할 것이다!!

profile
이제부터 백엔드 개발자

0개의 댓글