이론 - Nginx 란 누구일까

공부의 기록·2022년 8월 10일
0

Nginx

목록 보기
2/7
post-thumbnail

Nginx 알아보기

Nginx, 이름 부터 생소한 이 친구를 알아 보기 전에, 조금 더 익숙한 친구들로 이야기를 시작해보고자 합니다.

Node.JS 와 https

Node.JS 는 TCP/IP 포트를 점유하기 위한 내장 모듈로서 http 를 선택해서 사용하고 있습니다. 해당 모듈이 가지고 있는 메서드인 createServer 를 통해서 간단한 서버를 구현할 수도 있습니다.

Node.JS 공식 API 문서 - http.createServer

http.createServer([options], [, requestHandler]);

Java 와 Apache Tomcat

또한 Java 와 같이 내장 모듈을 가지고 있지 않은 경우에는 Apache Tomcat 과 같은 외부 소프트웨어 과 협력해서 서버를 구축하기도 합니다.

그래서, Nginx 는?

Nginx 는 이런 친구들처럼 특정한 TCP/IP 포트를 점유하여, 요청을 listen 하고 설정된 행동을 하도록 만들어줄 수 있습니다.


Nginx 자세히 알아보기

그런데 왜 Nginx 를 정상적으로 작동하고 있는 서버와 함께 운영하는 것일까요? 전 이부분이 너무 궁금해서 자세히 들어가 보고자 했습니다.

Nginx 에 대해서 검색을 하면 제일 먼저 공식 사이트가 나오게 됩니다.

  • Advanced Load Balancer
  • Web Server
  • Reversy Proxy

2 번째를 제외하고는 전부 생소한 단어들이라서 너무나 낯설었습니다. 그래서 하나하나 조금 더 디테일하게 이론을 짚어보도록 하겠습니다.

Client 와 Server

일반적으로 사용자, 요청자 를 클라이언트 라고 부르며, 공급자, 응답자 를 서버라고 부릅니다.
두 친구들을 일정한 양식 의 문서를 통해서 교신을 나누고 있을 것입니다. 클라이언트가 보내는 문서가 Request 이며, 이에 대해서 서버가 반환하는 문서가 Response 입니다.

아래 그림을 보면 더욱 쉽게 이해할 수 있을 것입니다.

Proxy Server

프록시 서버는 클라이언트 와 서버 사이에 존재하며 Gateway , 일종의 통로 역할을 해주는 서버입니다.

아래 그림을 보면 더욱 쉽게 이해할 수 있을 것입니다.

이러한 프록시 서버는 특정 목적 을 수행하기 위해서 존재하며 다음과 같은 예시를 찾아습니다.

  1. 프록시 서버에 데이터 캐싱
  2. 방화벽, 웹 필터, 특정 IP 차단 및 허옹 (블랙리스트 및 화이트 리스트)

이러한 프록시 서버는 제품 단위에서 다음과 같은 목적을 수행할 수 있습니다.

  1. 보안 강화
  2. 일종의 인트라넷을 구현하여, 사용자 층들이 snoop 등의 위험에 노출 되는 것을 방지
  3. 많은 수의 요청을 효율적으로 제어하여, 특정한 포트의 서버가 과부화 되는 것을 방지
  4. 인증 받은 사용자만 해당 서비스에 접근 하도록 제어
  5. 정적 파일(HTML, CSS, favicon...) 캐싱 및 반복적인 요청을 캐싱하여 대역폭 절약

이러한 Proxy Server 는 존재하는 위치에 따라 다음과 같이 구성 됩니다.

  1. Foward Proxy Server
  2. Rerverse Proxy Server

Gist - unchaptered/Proxy.md
TStory - [네트워크] 프록시 서버란? 원리와 사용 목적
FORTINET - What is Proxy? How does it work?

Foward Proxy Server

포워드 프록시 서버는 인터넷 접속 전에 경유하게 만들어 놓은 Proxy Server 입니다.

일종의 인트라넷 처럼 격리된 구역에서 높은 수준의 보안 상태를 유지할 수 있습니다.

하지만, 인트라넷 과는 달리 인터넷을 사용할 수 있다는 점이 다릅니다.

이러한 프록시 서버는 제품 단계에서 다음과 같은 목적을 수행할 수 있습니다.

  1. 개별 Client 의 IP 를 숨길 수 있습니다.
    IP 를 트래킹 해서 Client 에게 가해지는 공격을 1차적으로 차단할 수 있습니다.
  2. 일종의 격벽, 방화벽 설정을 통해서 직접적으로 프록시 서버에서 공격을 차단할 수 있습니다.

Gist - unchaptered/Foward Proxy.md

Reverse Proxy Server

리버스 프록시 서버는 인터넷 을 통해서 넘어온 요청이 Server 에 도달 하기 전에 경유 하도록 만들어 놓은 Proxy Server 입니다.

리버스 프록시 서버는 아래와 같이 다양한 프로토콜에 Gateway 로서 간섭할 수 있습니다.

  1. FTP 와 같은 파일 전송 프로토콜
  2. HTTP, HTTPS 와 같은 인터넷 교신 프로토콜
  3. IMAP, POP, SMTP 와 같은 이메일 전송 프토토콜

해당 프로토콜 들에게 제공할 수 있는 옵션을 간단하게 정리하면 다음과 같습니다.

  1. 보안 강화 - 암호화 및 복호화 (TSL/SSL 와 같이...)
  2. 부하 분산 - 다양한 설정값에 따라서 N 개의 서버에 부하를 분산
  3. DDoS 방어 - IPv4 IPv6 에 대해서 블랙 리스트를 등록하여 서버 DDoS 에 대한 방화벽이 강화
  4. Injection 방어 - SQL Injection 과 같은 친구들을 Nginx 영역에서 방어 가능

그 외에도 다양한 옵션들이 제공되고 있으며 자세한 내용은 공식 문서 를 참고해 주기실 바랍니다.

Gist - unchaptered/Reverse Proxy.md

Load Balancer

마지막으로, Advanced LOad Balancer 에 대해서 알아보고자 합니다.

로드 밸런서에 대해서 검색을 해보면 다음과 같은 내용이 나옵니다.

컴퓨팅에서 부하 분산은 전체 처리를보다 효율적으로 만들기 위해 일련의 작업을 리소스 (컴퓨팅 단위)에 분산시키는 프로세스를 말합니다
Wikipidea - Load balancing (computing)

결국 로드 밸런서라는 친구는 1 개의 서비스 에 걸릴 부하들을 N 개의 서버 로 일련의 프로세스를 효율적으로 만드는 것을 의미합니다.

Nginx vs AWS

이러한 Load Balancer 는 NginxAWS Elastic Load Balancer 를 이용하는 방법이 있는데 그 차이는 다음과 같습니다.

  • Nginx - 하나의 PC 에서 N 개의 서버를 실행 및 관리
  • AWS Elastic Load Balancer - 여러 개의 PC 를 연결 해서 실행 및 관리

profile
2022년 12월 9일 부터 노션 페이지에서 작성을 이어가고 있습니다.

0개의 댓글