Nginx를 Nodejs 앱의 역방향 프록시로 구성하는 방법
Nodejs는 Chrome의 V8 JavaScript 엔진을 기반으로 구축된 가볍고 확장 가능하며 효율적인 무료 오픈 소스 JavaScript 프레임워크이며 이벤트 중심의 비차단 I/O 모델을 사용합니다. Nodejs는 이제 어디에나 있으며 웹사이트, 웹 앱, 네트워크 앱 등의 소프트웨어를 개발하는 데 매우 인기가 있습니다.
Nginx는 오픈 소스 고성능 HTTP 서버, 로드 밸런서 및 역방향 프록시 소프트웨어입니다. 간단한 구성 언어가 있어 구성이 쉽습니다. 이 기사에서는 Nginx를 Nodejs 애플리케이션의 역방향 프록시로 구성하는 방법을 보여줍니다.
또한 읽어 보세요: Nginx 웹 서버의 보안, 강화 및 성능 향상을 위한 궁극적인 가이드
참고: 시스템이 이미 Nodejs 및 NPM으로 실행되고 있고 앱이 특정 포트에서 실행되고 있는 경우 , 4단계로 바로 이동하세요.
1단계: Linux에 Nodejs 및 NPM 설치
Node.js 및 NPM의 최신 버전은 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의 방식이 다르기 때문에 $releasever
를 6으로 바꿔야 합니다. (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 애플리케이션의 역방향 프록시로 구성하는 방법을 보여주었습니다. 질문이 있거나 이 기사에 대한 생각을 공유하려면 아래 피드백 양식을 사용하세요.