20220630 NginX

doodung·2022년 6월 30일
0

WEB

목록 보기
2/15

외부 클라이언트에서 서버로 접근 시, 중간에서 중개자 역할을 하여 내부 서버로 접근할 수 있도록 도와주는 서버.

NginX의 구조

서버는 World Wide Web에서 만들어진 클라이언트 요청을 서비스하기위해 HTTP나 그 이외의 프로토콜(HTTPS/SMTP/FTP...)을 사용하는 SW/HW다. 하드웨어로서의 웹 서버는 웹 서버가 설치되어있는 컴퓨터를 의미하며, 소프트웨어로서의 웹 서버는 앞서말한 기능을 제공하는 컴퓨터 프로그램을 말한다. Apache, Nginx, IIS 등이 있다. 대부분은 웹 페이지 컨텐츠를 제공하는 역할을 한다.

Nginx의 구조 알아보기

Nginx는 Event-Driven 방식을 사용한다. Node.js가 대표적으로 이 방식을 사용하고 있는데, 싱글 쓰레드의 Event Loop가 계속해서 돌아가면서 Event Queue에 요청이 들어오면 Thread Pool에 분배하여 넣어 비동기적으로 처리하도록 한다. 그렇기 때문에 많은 요청이 한꺼번에 오더라도 무리없이 서비스할 수 있다.

식당에 비유하자면...손님들에게 일단 당장 음식은 내오지 못하더라도 메뉴는 주방에 전달하고 손님을 앉히게해서 한꺼번에 많은 손님들을 받을 수 있는 그런 구조다.

Nginx는 설정을 읽거나 포트에 바인딩을 하는등 주요한 기능을하는 Master Process가 있고, 다수의 Worker들이 있으며, Helper Process가 그 아래에 존재한다. 실질적으로 모든 클라이언트 요청을 처리하는 일은 Worker Process가 담당하고 있는데, Worker process는 nginx 설정에서 개수를 정의할 수 있고, 기본적으로는 CPU의 코어 수에 맞게 할당된다. 클라이언트 요청이 늘어난다고 해서 Worker Process가 증식하지 않는다. 그 외에도 아래의 구조 그림에서 볼 수 있듯 Cache Helper 프로세스들이 존재한다.

Nginx 서버가 구동되면, 각각의 Worker Process가 Context-switching을 최소화하면서 비동기적으로 여러 커넥션을 처리한다. 각각의 Worker Process는 독립적인 싱글 쓰레드 프로세스이며 그 프로세스들은 공유 메모리(Shared memory)를 이용하여 cache data, session data 등등 공유자원에 접근할 수 있다.

NginX의 활용 : Reverse Proxy

동시에 많은 요청을 처리할 수 있다는 장점때문에 Nginx는 Reverse Proxy로도 널리 사용되고 있다.

Reverse Proxy는 클라이언트의 요청을 받아서 내부 서버로 전달해주는 방식이다. 호출한 IP를 알아낸다 하더라도 실제 어느 IP까지 통하는지 알 수 없기 때문에 이는 클라이언트로 부터 서버를 숨기는 역할을 하게 된다. 이렇게 보안성이 높아진다는 장점도 있지만, 클라이언트의 요청을 여러대의 서버로 나누어 처리한다면 Load Balancer 역할도 할 수 있다.

장점

  • 보안
    외부 사용자로부터 내부 망에 있는 서버의 존재를 숨길 수 있음. 모든 요청은 리버스 프록시 서버에서 받으며, 매핑되는 내부 서버로 요청을 전달함. 또한, NginX는 SSL 설정도 가능

  • 로드 밸런싱
    리버스 프록시 서버가 내부 서버에 대한 정보를 알고 있으므로, 각 서버의 상태에 따라 부하를 분신시키며 요청을 전달할 수 있음

https://jizard.tistory.com/306
https://serverguy.com/comparison/apache-vs-nginx/
https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/
https://icarus8050.tistory.com/57

profile
반가워요!

0개의 댓글