[TIL] 항해99 51일차

심우진·2021년 11월 5일
0
post-thumbnail

NGINX

NGINX는 최신 웹의 증가하는 요구를 지원하기 위해 개발된 고성능 웹서버입니다. NGINX는 높은 성능, 높은 동시성 그리고 낮은 자원 사용에 중점을 두고 있습니다.

웹서버(web server) : 주로 정적 콘텐츠(이미지나 정적 HTML 등)를 제공하기 위해 설계되었으며 동적 콘텐츠 요청을 식별하여 앱서버(app server)로 요청을 전달하는 역할을 수행하는 서버.

NGINX는 대부분 웹서버로 많이 알려져있지만 사실 NGINX는 역방향 프록시입니다.

역방향 프록시(reverse proxy) : 클라이언트의 요청을 받아 웹서버로 전달하여 응답을 받은 후 다시 클라이언트에 전달하는 역할을 수행하는 서버. 즉, 클라이언트와 웹서버 사이에 존재하는 서버.

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

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

NGINX가 클라이언트와 서버 사이에 있다보니 클라이언트와 서버가 직접적으로 통신을 주고 받는건 NGINX가 되는 것이죠.

그렇다보니 몇가지의 큰 이점이 주어지게 됩니다.

  • 로드 밸런싱 : 요청이 많은 사이트를 운영하는 경우 하나의 서버가 아닌 여러 대의 서버를 두고 운영을 하게 됩니다. 그럴 경우 특정 서버에만 요청이 몰리지 않도록 하는 역할을 NGINX가 수행하게 됩니다.
  • 공격으로 부터 보호 : NGINX를 사용하면 웹사이트나 서비스에서 실제 서버의 IP 주소를 필요로 하지 않기 때문에 DDoS와 같은 공격이 들어와도 NGINX를 공격하게 되지 실제 서버에는 공격이 들어오는 것을 막을 수 있습니다.
  • 캐싱 : NGINX는 콘텐츠를 캐싱할 수 있어 결과를 더 빠르게 응답하여 성능을 높일 수 있습니다.

0개의 댓글