Kako konfigurirati Nginx kao obrnuti proxy za aplikaciju Nodejs


Nodejs je besplatni otvoreni izvor, lagan, skalabilan i učinkovit JavaScript okvir izgrađen na Chromeovom V8 JavaScript mehanizmu i koristi I/O model koji upravlja blokiranjem događaja. 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 otvoreni izvor, HTTP poslužitelj visokih performansi, uravnoteživač opterećenja i obrnuti proxy softver. Ima izravni konfiguracijski jezik što ga čini jednostavnim za konfiguriranje. U ovom ćemo članku pokazati kako konfigurirati Nginx kao obrnuti proxy za Nodejs aplikacije.

Napomena: Ako se vaš sustav već izvodi s Nodejsom i NPM-om, a vaša aplikacija radi na određenom portu, prijeđite izravno na 4. korak.

Korak 1: Instaliranje Nodejs-a i NPM-a u Linux

Najnovija verzija Node.js i NPM dostupna je za instalaciju iz službenog spremišta binarnih distribucija NodeSource Enterprise Linux, Fedora, Debian i Ubuntu, koje održava web mjesto Nodejs, a morat ćete ga dodati u svoj sustav da biste mogli instalirajte najnovije Nodejs i NPM pakete kao što je prikazano.

---------- 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
---------- 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: Stvaranje Nodejs aplikacije

U svrhu demonstracije stvorit ćemo uzorak aplikacije nazvane "sysmon", koja će se izvoditi na portu 5000, kako 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 IP-om poslužitelja).

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

Spremite datoteku i izađite.

Sada pokrenite aplikaciju čvora pomoću sljedeće naredbe (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 preglednik i pristupite svojoj aplikaciji na URL-u http://198.168.43.31:5000 .

Korak 3: Instalirajte Nginx obrnuti proxy u Linux

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

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

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 kako slijedi.

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

Stvorite datoteku s imenom /etc/yum.repos.d/nginx.repo i zalijepite jednu od dolje navedenih konfiguracija.

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

Napomena: Zbog razlika između načina na koji CentOS i RHEL, potrebno je $releasever zamijeniti s 6 (za 6.x) ili 7 (za 7.x), ovisno o verziji vašeg 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 uspješne instalacije Nginxa, pokrenite ga, omogućite mu automatsko pokretanje prilikom pokretanja sustava i provjerite radi li 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 vatrozid, morate otvoriti priključke 80 (HTTP), 443 (HTTPS) i 5000 (aplikacija Čvor), koje web poslužitelj osluškuje za zahtjeve za povezivanjem 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 obrnuti proxy za Nodejs aplikaciju

Sada stvorite datoteku za konfiguraciju bloka poslužitelja za svoju aplikaciju Node 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 s IP-om poslužitelja i tecmint.lan s imenom domene).

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

Spremite promjene i zatvorite datoteku.

Konačno, ponovno pokrenite uslugu Nginx da biste izvršili nedavne promjene.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Korak 5: Pristupite aplikaciji Nodejs putem web preglednika

Sada biste trebali moći pristupiti svojoj aplikaciji Node bez navođenja priključka na kojem sluša, u URL-u: ovo je mnogo prikladan način za pristup korisnicima.

http://sysmon.tecmint.lan 

Da bi vaše testno ime domene moglo funkcionirati, morate postaviti lokalni DNS pomoću datoteke/etc/hosts, otvoriti ga i dodati redak ispod u njega (ne zaboravite promijeniti 192.168.43.31 s IP poslužitelja i tecmint.lan sa svojim imenom doamin kao prije).

192.168.43.31 sysmon.tecmint.lan

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