Kako konfigurirati Nginx kao obrnuti proxy za aplikaciju Nodejs


Nodejs je besplatan open source, lagan, skalabilan i efikasan JavaScript okvir izgrađen na Chrome-ovom V8 JavaScript motoru i koristi I/O model koji se ne blokira, vođen događajima. Nodejs je sada posvuda i postao je toliko popularan za razvoj softvera od web stranica, web aplikacija do mrežnih aplikacija i još mnogo toga.

Nginx je open source HTTP server visokih performansi, balansiranje opterećenja i softver za reverzni proxy. Ima jednostavan konfiguracijski jezik koji ga čini lakim za konfiguraciju. U ovom članku ćemo pokazati kako konfigurirati Nginx kao obrnuti proxy za Nodejs aplikacije.

Pročitajte također: Ultimativni vodič za sigurnu, ojačanu i poboljšanje performansi Nginx web servera

Napomena: Ako vaš sistem već radi sa Nodejs i NPM, i ako vaša aplikacija radi na određenom portu , idite direktno na 4. korak.

Korak 1: Instaliranje Nodejs i NPM u Linux

Najnovija verzija Node.js i NPM dostupna je za instalaciju sa službenog spremišta binarnih distribucija NodeSource Enterprise Linux, Fedora, Debian i Ubuntu, koje održava web stranica Nodejs i moraćete da ga dodate svom sistemu da biste mogli da instalirate najnovije Nodejs i NPM pakete kao što je prikazano.

Na Debian/Ubuntu

---------- 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

Na CentOS/RHEL-u i Fedori

---------- 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 -

Korak 2: Kreiranje Nodejs aplikacije

U svrhu demonstracije, kreirat ćemo primjer aplikacije pod nazivom “sysmon”, koja će raditi na portu 5000 kao što je prikazano.

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

Kopirajte i zalijepite sljedeći kod u datoteku server.js (zamijenite 192.168.43.31 sa IP serverom).

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}/`);
});

Sačuvajte fajl i izađite.

Sada pokrenite svoju aplikaciju čvora koristeći sljedeću naredbu (pritisnite Ctrl+x da biste je prekinuli).

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

Sada otvorite pretraživač i pristupite svojoj aplikaciji na URL http://198.168.43.31:5000.

Korak 3: Instalirajte Nginx Reverse Proxy u Linux

Instalirat ćemo najnoviju verziju Nginxa iz službenog spremišta, kao što je prikazano ispod.

Na Debian/Ubuntu

Kreirajte datoteku pod nazivom /etc/apt/sources.list.d/nginx.list i dodajte joj sljedeće redove.

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

Zatim dodajte ključ za potpisivanje spremišta, ažurirajte indeks sistemskog paketa i instalirajte nginx paket na sljedeći način.

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

Na CentOS/RHEL-u i Fedori

Kreirajte datoteku pod nazivom /etc/yum.repos.d/nginx.repo i zalijepite jednu od konfiguracija ispod.

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

Napomena: Zbog razlika između CentOS-a i RHEL-a, potrebno je zamijeniti $releasever sa bilo 6 (za 6.x) ili 7 (za 7.x), ovisno o verziji OS-a.

Zatim dodajte ključ za potpisivanje spremišta i instalirajte nginx paket kao što je prikazano.

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

Nakon što uspješno instalirate Nginx, pokrenite ga, omogućite mu automatsko pokretanje pri pokretanju sistema i provjerite da li je pokrenut i radi.

---------- 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

Ako koristite sistemski zaštitni zid, morate otvoriti port 80 (HTTP), 443 (HTTPS) i 5000 (Node aplikacija), koje web server sluša za zahtjeve za povezivanje klijenta.

---------- 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 

Korak 4: Konfigurirajte Nginx kao Reverse Proxy za Nodejs aplikaciju

Sada kreirajte konfiguracijsku datoteku bloka servera za vašu Node aplikaciju pod /etc/nginx/conf.d/ kao što je prikazano.

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

Kopirajte i zalijepite sljedeću konfiguraciju (promijenite 192.168.43.31 sa IP serverom i tecmint.lan sa imenom vašeg domena).

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;
    }
}

Sačuvajte promjene i izađite iz datoteke.

Konačno, ponovo pokrenite Nginx servis da biste izvršili nedavne promjene.

sudo systemctl restart nginx
OR
systemctl restart nginx

Korak 5: Pristupite aplikaciji Nodejs putem web pretraživača

Sada biste trebali moći pristupiti vašoj Node aplikaciji bez navođenja porta na kojem sluša, u URL-u: ovo je vrlo zgodan način za korisnike da joj pristupe.

http://sysmon.tecmint.lan 

Da bi ime vašeg testnog domena funkcionisalo, morate postaviti lokalni DNS koristeći datoteku /etc/hosts, otvoriti je i dodati red ispod (ne zaboravite promijeniti 192.168.43.31 sa IP-om vašeg servera i tecmint.lan sa vašim imenom domene kao i prije).

192.168.43.31 sysmon.tecmint.lan

To je sve! U ovom članku smo pokazali kako konfigurirati Nginx kao obrnuti proxy za Nodejs aplikacije. Koristite obrazac za povratne informacije u nastavku da postavite bilo kakva pitanja ili podijelite svoje mišljenje o ovom članku.