티스토리 뷰

카테고리 없음

Ngnix는 왜 1등 웹서버일까!?

✨✨✨✨✨✨✨ 2021. 9. 28. 22:22
반응형

Nginx는 왜 점유율이 1등일까?!

Ngnix는 Naver, Kakao, NETFLIX, GitHub등 많은 대기업에서 사용하고 있다. 그만큼 인증된 서비스라는것이다!

설명흐름은 아래와 같다

  1. WHAT : Ngnix란 무엇일까?
  2. WHY : Ngnix는 왜 써야하는가?
  3. HOW : Ngnix는 어떻게 적용하면되는가?

1. WHAT : Ngnix란 무엇일까?

전체적인 흐름은 브라우저에서 클라이언트 요청이 있으면 WebServer(Ngnix)는 WAS에 해당요청을 보내고 DB를 조회하여 WebServer에서 페이지를 클라이언트에게 전달해주는 흐름입니다.

그렇다면 WebServer와 WAS의 차이점이 뭘까요?!

WebServer ?
정적인 파일(HTML, CSS, JS)을 응답해주는 것으로 Ngnix, Apache 등을 예시로 들 수 있다.

WAS(Web Application Server) ?
클라이언트 요청에 대해 동적페이지(DB와 연동된)를 응답

ex) 로그인정보를 가지고 동적인 처리를해주어 WAS를 거친 후 페이지를 응답해주는 것

2. WHY : Ngnix는 왜 써야하는가?

가. 웹서버를 별도로 운영하는 이유는?

WAS의 부담을 줄이기 위해 WAS는 동적인 페이지, DB연동 및 처리등 할일이 많기에 Ngnix가 정적인 페이지를 주는 등 간단한 역할들을 해줌으로써 WAS의 부담을 줄일 수 있다.

나. 굳이 Ngnix를 사용하는 이유는 뭘까?
  • 빠르다.
  • 리버스 프록시로 사용가능 (Reverse Proxy)
  • SSL을 지원해준다.
  • 비동기처리
나-1. 빠르다

)

그림은 메모리 사용량인데, Nginx는 동시요청이 많아도 메모리 사용량은 낮고 일정하다.

그림은 초당 처리그래프인데

Ngnix는 동시요청수가 많아져도 빠르게 처리 가능함을 알 수 있다.

나-2. 리버스 프록시로 사용가능 (Reverse Proxy)

프록시란? 무언가를 대신 처리해주는 대리역할을 한다.

)

  • forward Proxy :
    • 위치 : [Client] - [forward Proxy] - [Internet] - [WAS]
    • 클라이언트의 요청을 forward Proxy 서버가 대신 받아서 인터넷에 연결 요청한다.
    • 예제: 보안이 매우 중요한 기업환경에서 내부망을 설정해서 정해진 인터넷 사이트만 연결하여 설정하여 웹 사용 환경을 제한한다.
      • 사용자가 naver.com 사이트에 접속하는경우 PC에서 직접 연결하는것이 아닌, forward Proxy 서버에서 요청을 받아 naver.com사이트에 연결한 후 그 결과를 반환환다.
    • 위치 : [Client] - [forward Proxy] - [Internet] - [WAS]
  • reverse Proxy :
    • [Client] - [Internet] - [reverse Proxy] - [WAS]
    • Internet과 appServer사이에 존재하는 서버로써 (ex: nginx)
    • 사용자가 naver.com을 입력하면 해당 사이트 기업에서 설정한 Reverse Proxy WEB 서버를 통한 뒤,
      내부망에 접근하여 데이터를 받아온 다음 Proxy Server가 데이터를 받아 다시 클라이언트에게 전달해준다.
    • 요청에따른 처리를 어떤 서버로 할지 밸런싱있게 조율해주는 로드밸런싱이 가능하다.
    • 캐시서버가 가능하다
    • 자주 요청되는 클라이언트 요청을 저장(캐싱)해둘 수 있다.
      • 한번 더 요청있는 경우 백단까지 안가고 바로 응답 가능
  • 재미있는 사실
    • apach는 forward proxy와 reverse proxy둘다 존재
    • ngnix는 reverse proxy만 존재
나-3. SSL을 지원해준다.
  • ssl인증서인 certbot과의 연결을 가능하도록 도와준다.
  • 위 인증서를 제공할 수 있도록 도와준다.
나-4. 비동기처리
  • 클라이언트의 요청을 비동기방식으로 처리 가능하도록해준다
  • 이벤트루프 라는 녀석을 사용함!

3. HOW : Ngnix는 어떻게 적용하면되는가?

* 기본지식
http 요청은 무조건 80포트로 요청간다
https 는 무조건 443포트로 요청된다.
// Linux Ubuntu
$ cd /etc/ngnix/sites-enabled
$ sudo rm defalut -- 기존에 있던것 지우고
$ sudo vi default -- 새로 생성

  • 클라이언트가 HTTP로 접속 시 80번 포트로 접속된다.
    Ngnix가 80번 포트로 오면 443으로 우회시켜준다.
server {
  listen 80: //80번 포트로 접속 시
  server_name idu-market.shop;

  //ngnix로 로그관리
  # access_log /var/log/nginx/reverse-access.log
  # error_log /var/log/nginx/reverse-error.log

  // $host : 클라이언트 요청 도메인
  if($host = idu-market.shop) {

    // 301 : https(443)로 우회시켜라
    return 301 https://$host$request_uri;
  }
}
  • 클라이언트가 HTTPS로 접속 시 443번 포트로 접속된다.
    백엔드 서버로 연결된다.
server {
  listen 443 ssl; //443포트로 왔을 경우
  server_name idu-market.shop;

  # access_log /var/log/nginx/reverse-access.log
  # error_log /var/log/nginx/reverse-error.log

  location / {
    proxy_pass http:127.0.0.1:5000; // 5000번 포트로 우회시켜라
  }  
}
참조
우리밋_woorimIT [Nginx] 도대체 뭐길래 카카오, 네이버에서 사용할까
https://www.youtube.com/watch?v=ZJpT-Wa-pZ8

포워드 프록시(forward proxy) 리버스 프록시(reverse proxy) 의 차이
https://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html
https://sujinhope.github.io/2021/06/13/Network-%ED%94%84%EB%A1%9D%EC%8B%9C(Proxy)%EB%9E%80,-Forward-Proxy%EC%99%80-Reverse-Proxy.html#title3
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함