Kuidas konfigureerida Nginx rakenduse Nodejs pöördproksiks


Nodejs on tasuta avatud lähtekoodiga, kerge, skaleeritav ja tõhus JavaScripti raamistik, mis on ehitatud Chrome'i V8 JavaScripti mootorile ja kasutab sündmustepõhist, mitteblokeerivat sisend- ja väljundmudelit. Nodejs on nüüd kõikjal ja on muutunud nii populaarseks tarkvara arendamisel alates veebisaitidest, veebirakendustest kuni võrgurakendusteni ja palju muud.

Nginx on avatud lähtekoodiga, suure jõudlusega HTTP-server, koormuse tasakaalustaja ja vastupidine puhverserver. Sellel on lihtne konfiguratsioonikeel, mis muudab selle konfigureerimise lihtsaks. Selles artiklis me näitame, kuidas Nginxi Nodejs-rakenduste vastupidise puhverserverina konfigureerida.

Märkus. Kui teie süsteem töötab juba Nodejs ja NPM-iga ja teie rakendus töötab teatud pordis, minge otse 4. sammu juurde.

1. samm: installige Nodejs ja NPM Linuxi

Node.js ja NPM uusima versiooni saab installida ametlikust NodeSource Enterprise Linuxi, Fedora, Debiani ja Ubuntu binaarsete jaotuste hoidlast, mida haldab Nodejs veebisait ja peate selle oma süsteemi lisama, et saaksite installige uusimad Nodejs ja NPM paketid, nagu näidatud.

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

2. samm: Nodejs-rakenduse loomine

Demonstreerimise eesmärgil loome näidisrakenduse nimega “sysmon”, mis töötab pordil 5000, nagu näidatud.

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

Kopeerige ja kleepige järgmine kood faili server.js (asenda 192.168.43.31 oma serveri IP-ga).

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

Salvestage fail ja väljuge.

Nüüd käivitage oma sõlmpunktirakendus järgmise käsu abil (selle lõpetamiseks vajutage 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

Nüüd avage brauser ja pöörduge oma rakenduse poole aadressil URL http://198.168.43.31:5000 .

3. samm: installige Nginx Reverse Proxy Linuxi

Installime Nginxi uusima versiooni ametlikust hoidlast, nagu allpool näidatud.

Looge fail nimega /etc/apt/sources.list.d/nginx.list ja lisage sellele järgmised read.

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

Järgmisena lisage hoidla allkirjastamisvõti, värskendage oma süsteemipaketi indeksit ja installige pakett nginx järgmiselt.

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

Looge fail nimega /etc/yum.repos.d/nginx.repo ja kleepige üks järgmistest konfiguratsioonidest.

[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

Märkus: CentOS-i ja RHEL-i vaheliste erinevuste tõttu tuleb $releasever asendada kas 6-ga (6.x-i jaoks) või 7-ga (7.x-i jaoks), sõltuvalt teie OS-i versioonist.

Järgmisena lisage hoidla allkirjastamisvõti ja installige nginxi pakett nagu näidatud.

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

Pärast Nginxi edukat installimist käivitage see, lubage tal süsteemi käivitamisel automaatselt käivitada ja kontrollige, kas see on töökorras.

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

Kui kasutate süsteemi tulemüüri, peate avama pordid 80 (HTTP), 443 (HTTPS) ja 5000 (rakendus Node), mida veebiserver klientide ühenduse taotluste korral kuulab.

---------- 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. samm: konfigureerige Nginx rakenduse Nodejs pöördproksoks

Nüüd looge oma sõlme rakenduse jaoks serveriploki konfiguratsioonifail /etc/nginx/conf.d/ all, nagu näidatud.

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

Kopeerige ja kleepige järgmine konfiguratsioon (muutke 192.168.43.31 oma serveri IP-ga ja tecmint.lan oma domeeninimega).

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

Salvestage muudatused ja väljuge failist.

Lõpuks taaskäivitage Nginxi teenus hiljutiste muudatuste rakendamiseks.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

5. samm: pääsete Nodejs-rakendusele juurde veebibrauseri kaudu

Nüüd peaksite oma Node-rakendusele juurde pääsema ilma URL-i kuulamata porti pakkumata: see on kasutajatele palju mugavam viis sellele juurde pääseda.

http://sysmon.tecmint.lan 

Selleks, et teie testdomeeninimi töötaks, peate faili/etc/hosts abil seadistama kohaliku DNS-i, avama selle ja lisama selles oleva rea (pidage meeles, et muutke 192.168.43.31 oma serveri IP-ga ja tecmint.lan oma doamin-nimega nagu enne).

192.168.43.31 sysmon.tecmint.lan

See on kõik! Selles artiklis näitasime, kuidas Nginxi Nodejs-rakenduste vastupidise puhverserverina konfigureerida. Selle artikli kohta küsimuste esitamiseks või oma mõtete jagamiseks kasutage allolevat tagasiside vormi.