책, 세미나, 강연/도서

[기타] Nginx란

JiWonSon 2022. 5. 12. 16:59

1. nginx란

경량 웹서버로 2가지 역할로 활용 된다.

  • HTTP Web Server :클라이언트로부터 요청을 받았을 때  was를 거치지 않고 요청에 맞는 정적 파일을 응답
  • Reverse Proxy Server : WAS 서버의 부하를 줄일 수 있는 로드 밸런서

2. Apache 서버와 다른점

Apache 웹서버는 클라이언트로부터 받은 요청을 처리할 때 새로운 프로세스 또는 스레드를 생성하여 처리한다.

따라서 요청마다 스레드가 생성되므로 접속하는 사용자가 많으면 스레드가 그만큼 생성되어 CPU와 메모리자원의 소모가 크다는 단점이 있다.

반면에, Nginx는 Event handler를 통해 동작하기 때문에 한개 또는 고정된 프로세스만 진행 후, 비동기방식으로 요청들을 처리할 수 있다. 위의 그림에서 보이듯이 Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능하다. 이러한 Nginx의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있다.

 

3. 위에서 언급한 reverse proxy가 무엇일까?

먼저 클라이언트가 데이터를 요청하면 서버가 리소스를 가져다준다.

Proxy 중간에 클라이언트의 요청을 서버로 보내주는 Proxy는 중계 서버다.

 

[Forward Proxy]

일반적인 프록시 서버를 말하며, 클라이언트와 웹 서버의 중개역할로 클라이언트가 요청 시 Proxy서버는 해당 요청을 웹 서버로 중계해 자원을 가져오는 개념이다.

프록시 서버는 클라이언트가 요청하기 전까지 웹 서버의 주소를 알 수 없다는 게 특징이다.

 

포워드 프록시 방식은 정해진 사이트에만 연결이 가능하게끔 설정이 가능해서 주로 회사 내부의 인트라넷 등 보안이 중요한 환경에서 주로 사용된다.

 

 

 

[Reverse Proxy]

클라이언트와 서버 사이에(서버 앞에) 위치하여 보안, 로드밸런싱 역할을 한다. 그래서 클라이언트가 특정 리소스를 요청을 하면 프록시 서버가 WAS에 요청 후 응답 받은 리소스를 클라이언트에게 전달해주는 개념이다.

예를 들자면 이 방식은 특정 ip주소에서 제공하는 api서버를 호출하기 위해서 인터넷에 있는 클라이언트가 리버스 프록시 서버에 api를 요청하여 응답을 받는 방식이다.

 

 

4. 로드밸런싱?

서버의 부하를 분산시키는 기술이다.

많은 클라이언트들이 하나의 웹 사이트에 접속해서 해당 서버의 트래픽이 늘어날 때 여러 대의 서버를 이용해서 요청을 처리하도록 한다. 각 서버의 부하량, 속도 저하 등을 고려해서 서버의 가중치, 스케줄링 등을 결정해 트래픽을 적절히 분산시키는 과정을 로드밸런싱이라고 한다.

  * 장점?

한 서버의 부하를 분산시킨다는 게 당연히 장점이 된다.

값싼 비용으로 다수의 서버를 증설하여 관리할 수 있기 때문에 고가의 서버를 구매할 필요가 없다.

1대의 서버가 멈춰도 서비스가 중단되지 않는다. 마찬가지로 서버를 늘리는 과정에서도 서비스가 중단되지 않는다.

  * 방법?

1. Round Robbin : 운영체제 스케줄링 방법에도 있는 방식이다. 주어진 서버들을 순차적으로 돌아가면서 선택하는 방법이다.

2. Least-connected : 현재 접속자 수가 가장 적은 서버를 선택하는 방법이다.

3. ip-hash : hash function을 사용해서 클라이언트 ip를 hash 한 결과에 따라서 다른 서버를 할당해주는 방법이다.

'책, 세미나, 강연 > 도서' 카테고리의 다른 글

[운영체제]  (1) 2022.12.10