[Nginx]

황승수 (Seungsu)·2023년 5월 31일

Proxy란?

Proxy란 '대리', '대신'의 의미로, 보안상 문제로 직접 통신을 주고받을 수 없는 두 PC 사이에서 통신할 때 직접 하지 않고 중간에서 대리로 중계하는 개념.
프록시 서버가 어디에 위치하느냐에 따라 포워드 프록시와 리버스 프록시로 나뉜다.

Forward Proxy


클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 포워드 프록시 서버를 거쳐 요청한다.
이 경우 서버에서 받는 IP는 클라이언트의 IP가 아닌 프록시 서버의 IP이기 때문에 서버는 클라이언트가 누구인지 알 수 없다.
따라서 포워드 프록시 서버는 서버에게 클라이언트가 누구인지 감춰주는 역할을 한다.

포워드 프록시는 주로 캐싱 기능을 담당하여 자주 사용되는 컨텐츠에 대해 캐싱 기능을 제공하고, 정해진 사이트만 연결되게 설정하는 등의 기능을 담당한다.

Reverse Proxy


WAS 서버 앞에 위치하며 클라이언트가 서버에 요청할 때 리버스 프록시 서버를 호출하고, 리버스 프록시 서버가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 담당한다.

주로 여러 개의 내부 서버를 두어 로드 밸런싱이나 서버 확장을 통해 트래픽을 분산시키는데 활용.
클라이언트가 내부 서버를 직접 접근하지 못하기 때문에 보안이 강화되고, HTTPS 사용시 복호화 과정을 대신 수행하는 등 성능적 이점이 있다.


Nginx

트래픽이 많은 웹서버(WAS)를 도와주는 비동기 이벤트 기반 구조의 경량화된 웹 서버 프로그램.
클라이언트의 정적 파일 요청에 대해 WAS를 거치지 않고 직접 응답하거나,
또는 Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서의 역할을 담당.

Apache vs Nginx

Apache Server

  • 클라이언트 접속마다 Process 혹은 Thread를 생성하는 구조.
  • C10K 문제, 대용량 처리에서의 한계점
  • 요청이 없으면 프로세스가 방치됨

Nginx

Apache Server의 구조적 문제점을 해결. os 커널이 queue 형식으로 worker process에게 이벤트들을 전달하고 이벤트들이 큐에서 비동기 상태로 대기한다. worker process가 하나의 스레드로 이벤트를 꺼내서 쉬지 않고 처리하기 때문에 효율적으로 CPU 자원 사용

동시 커넥션 수당 메모리 사용량 비교

동시 커넥션 수에 따라 처리되는 초당 요청 수

0개의 댓글