웹사이트 검색

Nginx를 Nodejs 앱의 역방향 프록시로 구성하는 방법


Nodejs는 Chrome의 V8 JavaScript 엔진을 기반으로 구축된 가볍고 확장 가능하며 효율적인 무료 오픈 소스 JavaScript 프레임워크이며 이벤트 중심의 비차단 I/O 모델을 사용합니다. Nodejs는 이제 어디에나 있으며 웹사이트, 웹 앱, 네트워크 앱 등의 소프트웨어를 개발하는 데 매우 인기가 있습니다.

Nginx는 오픈 소스 고성능 HTTP 서버, 로드 밸런서 및 역방향 프록시 소프트웨어입니다. 간단한 구성 언어가 있어 구성이 쉽습니다. 이 기사에서는 Nginx를 Nodejs 애플리케이션의 역방향 프록시로 구성하는 방법을 보여줍니다.

또한 읽어 보세요: Nginx 웹 서버의 보안, 강화 및 성능 향상을 위한 궁극적인 가이드

참고: 시스템이 이미 NodejsNPM으로 실행되고 있고 앱이 특정 포트에서 실행되고 있는 경우 , 4단계로 바로 이동하세요.

1단계: Linux에 Nodejs 및 NPM 설치

Node.jsNPM의 최신 버전은 Nodejs 웹사이트에서 관리하는 공식 NodeSource Enterprise Linux, Fedora, Debian 및 Ubuntu 바이너리 배포 저장소에서 설치할 수 있습니다. 그리고 표시된 대로 최신 Nodejs 및 NPM 패키지를 설치하려면 시스템에 이를 추가해야 합니다.

데비안/우분투에서

---------- Install Node.js v11.x ---------- 
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

CentOS/RHEL 및 Fedora에서

---------- Install Node.js v11.x ---------- 
curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -

2단계: Nodejs 애플리케이션 생성

데모를 위해 표시된 대로 포트 5000에서 실행되는 “sysmon”이라는 샘플 애플리케이션을 생성하겠습니다.

sudo mkdir -p /var/www/html/sysmon
sudo vim /var/www/html/sysmon/server.js

server.js 파일에 다음 코드를 복사하여 붙여넣습니다(192.168.43.31을 서버 IP로 교체).

const http = require('http');

const hostname = '192.168.43.31';
const port = 5000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('Sysmon App is Up and Running!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

파일을 저장하고 종료합니다.

이제 다음 명령을 사용하여 노드 애플리케이션을 시작합니다(종료하려면 Ctrl+x 누르기).

sudo node /var/www/html/sysmon/server.js
OR
sudo node /var/www/html/sysmon/server.js &   #start it in the background to free up your terminal

이제 브라우저를 열고 URL http://198.168.43.31:5000에서 애플리케이션에 액세스하세요.

3단계: Linux에 Nginx 역방향 프록시 설치

아래와 같이 공식 저장소에서 최신 버전의 Nginx를 설치하겠습니다.

데비안/우분투에서

/etc/apt/sources.list.d/nginx.list라는 파일을 만들고 다음 줄을 추가합니다.

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

다음으로 저장소 서명 키를 추가하고 시스템 패키지 색인을 업데이트한 후 다음과 같이 nginx 패키지를 설치합니다.

wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
sudo apt update
sudo apt install nginx

CentOS/RHEL 및 Fedora에서

/etc/yum.repos.d/nginx.repo라는 파일을 생성하고 아래 구성 중 하나를 붙여넣습니다.

CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

참고: CentOS와 RHEL의 방식이 다르기 때문에 $releasever6으로 바꿔야 합니다. (6.x의 경우) 또는 7(7.x의 경우), OS 버전에 따라 다릅니다.

다음으로 저장소 서명 키를 추가하고 표시된 대로 nginx 패키지를 설치합니다.

wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
yum install nginx

Nginx를 성공적으로 설치한 후 시작하고 시스템 부팅 시 자동 시작되도록 활성화한 후 실행 중인지 확인하세요.

---------- On Debian/Ubuntu ---------- 
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl status nginx

---------- On CentOS/RHEL ---------- 
systemctl status nginx
systemctl enable nginx
systemctl status nginx

시스템 방화벽을 실행 중인 경우 80(HTTP), 443(HTTPS)5000(노드 앱) 포트를 열어야 합니다. 웹 서버가 클라이언트 연결 요청을 수신하는 곳입니다.

---------- On Debian/Ubuntu ---------- 
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5000/tcp
sudo ufw reload

---------- On CentOS/RHEL ---------- 
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload 

4단계: Nginx를 Nodejs 애플리케이션의 역방향 프록시로 구성

이제 표시된 대로 /etc/nginx/conf.d/ 아래에 Node 앱에 대한 서버 블록 구성 파일을 만듭니다.

sudo vim /etc/nginx/conf.d/sysmon.conf 

다음 구성을 복사하여 붙여넣습니다(192.168.43.31을 서버 IP로 변경하고 tecmint.lan을 도메인 이름으로 변경).

server {
    listen 80;
    server_name sysmon.tecmint.lan;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://192.168.43.31:5000;
    }
}

변경 사항을 저장하고 파일을 종료합니다.

마지막으로 Nginx 서비스를 다시 시작하여 최근 변경 사항을 적용합니다.

sudo systemctl restart nginx
OR
systemctl restart nginx

5단계: 웹 브라우저를 통해 Nodejs 애플리케이션에 액세스

이제 URL에서 수신 대기 중인 포트를 제공하지 않고도 Node 앱에 액세스할 수 있습니다. 이는 사용자가 액세스하는 데 훨씬 편리한 방법입니다.

http://sysmon.tecmint.lan 

테스트 도메인 이름이 작동하려면 /etc/hosts 파일을 사용하여 로컬 DNS를 설정하고 해당 파일을 연 후 아래 줄을 추가해야 합니다(192.168.43.31 을 변경하는 것을 잊지 마세요) 을 서버 IP로 사용하고 tecmint.lan을 이전과 같이 도메인 이름으로 사용).

192.168.43.31 sysmon.tecmint.lan

그게 다야! 이 기사에서는 Nginx를 Nodejs 애플리케이션의 역방향 프록시로 구성하는 방법을 보여주었습니다. 질문이 있거나 이 기사에 대한 생각을 공유하려면 아래 피드백 양식을 사용하세요.