TIL | [로드밸런싱] NginX

bubblegum·2024년 4월 12일
0

Today I learn(TIL)

목록 보기
70/84
post-thumbnail

엔진엑스

엔진엑스(Nginx, 발음은 '엔진-X' 또는 '엔진익스')는 가볍고, 고성능을 자랑하는 웹 서버, 리버스 프록시, 그리고 이메일 프록시(POP3/IMAP)로 사용될 수 있는 소프트웨어입니다. 처음에는 웹 서버로 개발되었지만, 현재는 로드 밸런싱, HTTP 캐싱, 웹 서버 기능 등 다양한 기능을 제공하여, 대규모 웹 애플리케이션을 위한 강력한 프론트엔드 서버로 널리 사용되고 있습니다.

엔진엑스의 주요 특징

  1. 고성능: 엔진엑스는 비동기 이벤트 기반의 구조를 사용합니다. 이는 동시에 많은 연결을 효율적으로 처리할 수 있게 해줍니다. 따라서, 고적용량의 트래픽을 처리하는 데 매우 적합합니다.

  2. 리버스 프록시 및 로드 밸런싱: 엔진엑스는 리버스 프록시 서버로서의 기능을 제공합니다. 클라이언트의 요청을 받아, 이를 백엔드 서버로 전달하고, 그 결과를 다시 클라이언트에게 전달합니다. 이 과정에서 로드 밸런싱을 통해 트래픽을 여러 서버에 분산시킬 수 있습니다.

  3. 캐싱: 엔진엑스는 정적 파일(HTML, CSS, JavaScript 등)을 캐싱하여, 웹 페이지 로딩 시간을 단축시키고, 백엔드 서버의 부하를 줄일 수 있습니다.

  4. 보안 기능: SSL/TLS 암호화를 통한 보안 연결을 지원하며, 접근 제어, 인증 기능을 통해 웹 애플리케이션의 보안을 강화할 수 있습니다.

  5. 유연성과 확장성: 다양한 모듈을 통해 기능을 확장할 수 있으며, 강력한 구성 파일을 통해 사용자의 요구에 맞게 서비스를 세밀하게 조정할 수 있습니다.

사용 사례

  • 웹 서버: 정적 및 동적 웹 컨텐츠를 제공하는 웹 서버로 사용됩니다.
  • 리버스 프록시 서버: 애플리케이션 서버 앞에서 요청을 받아, 하나 이상의 백엔드 서버로 요청을 전달합니다. 이를 통해 로드 밸런싱, SSL 종료, 캐싱 등의 기능을 수행할 수 있습니다.
  • 로드 밸런서: 여러 서버에 걸쳐 트래픽을 분산시켜, 서버의 가용성과 안정성을 높입니다.
  • 메일 프록시 서버: POP3와 IMAP 프로토콜을 지원하는 메일 프록시 서버로도 사용될 수 있습니다.

엔진엑스는 그 유연성과 고성능으로 인해, 소규모 프로젝트부터 대규모 엔터프라이즈 환경까지 다양한 규모의 프로젝트에 사용됩니다.

리버스 프록시

리버스 프록시(reverse proxy)는 클라이언트와 서버 사이에 위치하여 클라이언트의 요청을 서버로 전달하고, 서버의 응답을 다시 클라이언트로 반환하는 중간자 역할을 합니다. 하지만 일반 프록시 서버가 클라이언트를 대신하여 서버에 요청하는 것과 달리, 리버스 프록시는 서버를 대신하여 클라이언트의 요청을 받아들입니다. 즉, 클라이언트는 마치 리버스 프록시가 실제 서버인 것처럼 요청을 보내고 응답을 받게 됩니다.

리버스 프록시의 주요 기능 및 장점은 다음과 같습니다:

1. 부하 분산(Load Balancing)

여러 대의 서버에 요청을 분산시켜 각 서버에 걸리는 부하를 줄이고, 전체 시스템의 처리 능력을 높입니다. 이를 통해 서비스의 가용성과 성능을 향상시킬 수 있습니다.

2. 보안 강화

리버스 프록시는 클라이언트와 실제 서버 사이의 중간자 역할을 하기 때문에, 외부에서는 실제 서버의 정보(IP 주소 등)를 알 수 없습니다. 이를 통해 서버를 직접적인 공격으로부터 보호할 수 있습니다.

3. SSL 암호화

SSL/TLS 암호화를 리버스 프록시에서 처리하게 함으로써, 서버의 부담을 줄이고 성능을 향상시킬 수 있습니다. 또한, 모든 트래픽을 암호화하여 보안을 강화할 수 있습니다.

4. 캐싱

리버스 프록시는 자주 요청되는 콘텐츠를 캐시에 저장하여, 동일한 요청이 들어올 때 빠르게 응답할 수 있습니다. 이를 통해 서버의 부하를 줄이고 응답 시간을 단축시킬 수 있습니다.

5. 압축

리버스 프록시에서 콘텐츠를 압축하여 클라이언트로 전송할 수 있습니다. 이를 통해 데이터 전송량을 줄이고, 로딩 시간을 단축시킬 수 있습니다.

6. SSL 오프로딩

SSL/TLS 암호화 및 복호화 과정을 리버스 프록시에서 처리하여, 웹 서버의 부하를 줄일 수 있습니다. 이를 통해 웹 서버의 성능을 향상시킬 수 있습니다.

리버스 프록시는 웹 애플리케이션의 성능과 보안을 향상시키는 데 중요한 역할을 합니다. Nginx, Apache HTTP Server, HAProxy 등 다양한 리버스 프록시 소프트웨어가 있으며, 각각의 특징과 설정 방법이 다릅니다.

Nginx 설치 및 세팅

1. Homebrew 설치

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. Nginx 설치

brew install nginx

3. Nginx를 시작, 정지, 재시작

brew services start nginx
brew services stop nginx
brew services restart nginx

4. Nginx와 Node.js 애플리케이션 연동

Node.js 애플리케이션을 실행하고 Nginx를 리버스 프록시로 설정하여 외부에서 Node.js 애플리케이션에 접근할 수 있도록 설정할 수 있습니다.

  1. Node.js 애플리케이션을 실행할 포트(예: 3000)를 설정합니다.

  2. Nginx 설정 파일을 수정합니다. 기본 경로는 /usr/local/etc/nginx/nginx.conf입니다. server 섹션 내에 있는 내용을 다음과 같이 수정하거나 추가합니다:

server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. Nginx를 재시작하여 설정을 적용합니다.
brew services restart nginx

이제 http://localhost로 접속하면, Nginx가 Node.js 애플리케이션으로 요청을 전달하여 애플리케이션에 접근할 수 있습니다.

profile
황세민

0개의 댓글

관련 채용 정보