Nginx와 자바스크립트 미들웨어를 이용한 Reverse Proxy 구현하기

개요

Reverse Proxy는 클라이언트 요청을 받아서 해당 요청을 다른 서버로 전달하는 역할을 하는 중간 서버입니다. 이번 블로그 포스트에서는 Nginx와 자바스크립트 미들웨어를 사용하여 Reverse Proxy를 구현하는 방법에 대해 알아보겠습니다.

Nginx 설치 및 설정

먼저, Nginx를 설치해야 합니다. Ubuntu에서는 다음의 명령어로 Nginx를 설치할 수 있습니다.

sudo apt-get install nginx

설치가 완료되었다면, Nginx의 설정 파일을 열어 Reverse Proxy를 설정해야 합니다.

sudo nano /etc/nginx/nginx.conf

이제 설정 파일에서 다음과 같이 Reverse Proxy 설정을 추가합니다.

http {
  server {
    listen 80;
    
    location / {
      proxy_pass http://backend_server;
    }
  }

  upstream backend_server {
    server backend_server_ip:port;
  }
}

위 설정에서는 모든 요청을 backend_server로 전달하도록 설정되어 있습니다. backend_server_ip와 port는 실제 백엔드 서버의 주소와 포트로 변경해야 합니다.

설정이 완료되었으면 Nginx를 다시 시작합니다.

sudo service nginx restart

이제 Nginx를 통해 Reverse Proxy가 작동하는지 확인할 수 있습니다.

자바스크립트 미들웨어 설정

Nginx만을 사용해서는 원하는 동적인 동작을 구현하기 어려울 때가 있습니다. 이럴 때에는 자바스크립트 미들웨어를 사용할 수 있습니다.

먼저, Nginx의 설정 파일을 열어 자바스크립트 미들웨어를 활성화해야 합니다.

sudo nano /etc/nginx/nginx.conf

다음과 같이 설정을 추가합니다.

http {
  server {
    ...
    location / {
      proxy_pass http://backend_server;
      proxy_set_header X-Middleware-Enabled true;
    }
  }
}

위 설정에서는 X-Middleware-Enabled라는 헤더를 추가하고, 이를 통해 자바스크립트 미들웨어가 사용 가능하도록 설정합니다.

이제 자바스크립트 미들웨어를 작성합니다. 프로젝트 폴더 내에 middleware.js 파일을 생성하고 다음과 같이 작성합니다.

function myMiddleware(req, res, next) {
  // 실제로 수행할 작업을 여기에 작성합니다.
  res.setHeader('X-Middleware', 'Hello from my middleware!');
  next();
}

module.exports = myMiddleware;

위 예시에서는 X-Middleware라는 헤더를 추가하고, 해당 헤더에 메시지를 설정하도록 작성되어 있습니다.

이제 Nginx 설정 파일에서 다음과 같이 자바스크립트 미들웨어를 설정합니다.

http {
  ...
  server {
    ...
    location / {
      proxy_pass http://backend_server;
      proxy_set_header X-Middleware-Enabled true;
      proxy_set_header X-Middleware-Code '
        function(req, res, next) {
          res.setHeader("X-Middleware", "Hello from my middleware!");
          next();
        }
      ';
    }
  }
}

위 설정에서는 proxy_set_header를 이용하여 X-Middleware-Code라는 헤더에 자바스크립트 미들웨어의 코드를 작성합니다.

이제 Nginx를 다시 시작합니다.

sudo service nginx restart

Reverse Proxy 서버에 요청을 보내면, 자바스크립트 미들웨어가 작동하여 추가한 헤더를 응답으로 받을 수 있습니다.

결론

이번 포스트에서는 Nginx와 자바스크립트 미들웨어를 사용하여 Reverse Proxy를 구현하는 방법에 대해 알아보았습니다. Nginx를 통해 Reverse Proxy를 설정하고, 자바스크립트 미들웨어를 이용하여 원하는 동작을 추가할 수 있습니다. 이를 통해 유연하고 강력한 Reverse Proxy 서버를 구현할 수 있습니다.

#References