Nginx 란?

Hyeonjeong Jeon·2022년 10월 3일
1

Nginx란?

트래픽이 많은 웹사이트의 확장성을 위해 개발된 비동기 이벤트 기반구조의 경량 웹서버이다. 높은 성능, 높은 동시성 그리고 낮은 자원 사용에 중점을 두고 있다.

웹서버(Web Server): HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 정적 콘텐츠(HTML, CSS, JS, Image 등)를 제공하는 서버

클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, 또는 Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서 역할을 하기도 한다.

역방향 프록시(Reverse Proxy Server): 클라이언트의 요청을 받아 웹서버로 전달하여 응답을 받은 후 다시 클라이언트에 전달하는 역할을 수행하는 서버

NGINX가 역방향 프록시이기 때문에 클라이언트의 요청을 중간에 가로채어 응답을 받는 실제 서버에 전달하고 서버에서 응답이 오면 요청을 했던 클라이언트에게 전달하는 역할을 수행한다.

서버 앞에서 클라이언트의 요청을 가로채는 역할을 수행하다 보니 클라이언트들은 직접적으로 실제 서버에는 통신할 수 없다는 특징을 가지게 된다.

Nginx의 기능

  • 로드 밸런싱 : 요청이 많은 사이트를 운영하는 경우 하나의 서버가 아닌 여러 대의 서버를 두고 운영을 하게 되며, 그럴 경우 특정 서버에만 요청이 몰리지 않도록 하는 역할을 NGINX가 수행하게 된다.

  • 공격으로 부터 보호 : 웹사이트나 서비스에서 실제 서버의 IP 주소를 필요로 하지 않기 때문에 DDoS와 같은 공격이 들어와도 NGINX를 공격하게 되지 실제 서버에는 공격이 들어오는 것을 막을 수 있다.

  • 캐싱 : 콘텐츠를 캐싱할 수 있어 결과를 더 빠르게 응답하여 성능을 높일 수 있다.

Nginx의 장단점

  • 장점
    • 이벤트 중심 접근 방식을 사용하여 클라이언트 요청 제공
    • 제한된 하드웨어 리소스로도 여러 클라이언트 요청을 동시에 효율적으로 처리
    • 단일 스레드를 통해 여러 연결을 처리 가능
    • 최소한의 리소스로 웹 서버의 아키텍처를 개선하기 위해 독립형 HTTP 서버로 배치 가능
  • 단점
    • 동적 컨텐츠를 기본적으로 처리 할 수 없음
    • 동적 콘텐츠에 대한 PHP 및 기타 요청을 처리하려면 NGINX가 이를 실행하기 위해 외부 프로세서로 전달하고 렌더링 된 콘텐츠가 다시 전송될 때까지 기다려야함(프로세스 속도 저하)
    • 즉, 동적 웹 페이지 컨텐츠를 가진 모든 요청을 위해 외부 자원과 연계(php-fpm)

Nginx의 특징

  • 비동기 Event-Driven 기반의 구조
  • 다수의 연결을 효과적으로 처리 가능
  • 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작 가능
  • 더 작은 쓰레드로 클라이언트의 요청들을 처리 가능

네이버는 2009년에 DDOS 공격을 받은 후 사용중이던 웹서버(Apache)의 취약점을 보완하기 위해 Nginx를 적용하였는데, 그 결과 TPS(서버가 처리하는 작업량)가 약 3배 증가하였으며, 서버 대수는 1/3으로 감소했다고 한다.

참고

https://dkswnkk.tistory.com/513
https://medium.com/@su_bak/nginx-nginx%EB%9E%80-cf6cf8c33245
https://choisee02.tistory.com/8

profile
👩🏻‍🌾기억을 기록하고 공유하자📚

0개의 댓글