Nginx / Reverse Proxy / Web Server

동민·2021년 3월 10일
1

Web Server & WAS

  • Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.

  • WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.

  • Web Server와 WAS의 기능을 분리하여 서버 부하 방지

  • 특히 대용량 웹 어플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.

  • 즉, Web Server를 WAS 앞에 두고 필요한 WAS들을 Web Server에 플러그인 형태로 설정하면 더욱 효율적인 분산 처리가 가능하다.


Nginx

  • 경량 Web Server / 클라이언트로부터 요청을 받았을 때, 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용
  • Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 함
  • Nginx는 Event-Driven 구조로 동작 -> 한 개 또는 고정된 프로세스만 생성하여 사용하여 비동기 방식으로 요청들을 Concurrency하게 처리함
  • Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로 효율적인 운용 가능

엔진엑스를 쓰는 이유

  • 서비스의 무중단 배포를 위해 사용한다.
  1. 엔진엑스가 Spring A(port:8081)를 가리키고 있어 사용자는 Spring A를 사용한다.
  2. 이후, Spring B(port:8082) 배포를 준비한다.
  1. Spring B 실행에서 에러가 없다고 판단되면 nginx reload 명령어를 통해 Spring B를 바라보도록 한다.
    • nginx reload는 0.1초 이내에 완료됨
  2. 사용자는 Spring B를 사용한다.(엔진엑스가 Spring B를 가리킴)
  1. 또 다시 새로운 버전의 서비스를 배포할 때는 Spring A를 다시 사용하여 nginx reload 한다.
  2. 반복
  • Nginx는 Docker에 띄워서 사용

Reverse Proxy

  • 사용자가 www.naver.com에 요청 하면 'reverse proxy'는 내부망과 통신을 통해 데이터를 받아옴
  • 받아온 데이터를 'reverse proxy'가 사용자에게 전달

리버스프록시를 사용하는 이유

  • 보안상의 이유가 큰데, 사용자는 내부망의 존재를 몰라도 됨
  • 리버스프록시와 내부망 둘이서 통신을 하며 요청에 응답하기 때문에 보안을 유지할 수 있음
  • 로드밸런싱을 통해 서버의 부하를 조절할 수 있는 장점
  • Nginx는 Reverse Proxy 기능을 제공하기 때문에 웹서버로 사용하고있음
profile
BE Developer

0개의 댓글