Kif tikkonfigura Nginx bħala Reverse Proxy għall-App Nodejs


Nodejs huwa qafas JavaScript ta' sors miftuħ b'xejn, ħafif, skalabbli u effiċjenti mibni fuq il-magna JavaScript V8 ta' Chrome, u juża mudell I/O mmexxi mill-avvenimenti, li ma jimblokkax. Nodejs issa jinsab kullimkien, u sar tant popolari għall-iżvilupp ta 'softwer minn websajts, apps tal-web għal apps tan-netwerk u aktar.

Nginx huwa sors miftuħ, server HTTP ta 'prestazzjoni għolja, bilanċjar tat-tagħbija u softwer ta' prokura inversa. Għandha lingwa ta 'konfigurazzjoni sempliċi li tagħmilha faċli biex tiġi kkonfigurata. F'dan l-artikolu, ser nuru kif tikkonfigura Nginx bħala prokura inversa għall-applikazzjonijiet Nodejs.

Nota: Jekk is-sistema tiegħek diġà qed taħdem b'Nodejs u NPM, u għandek l-app tiegħek taħdem fuq ċertu port, mur dritt għall-Pass 4.

Pass 1: Installazzjoni ta 'Nodejs u NPM fil-Linux

L-aħħar verżjoni ta’ Node.js u NPM hija disponibbli biex tinstalla mir-repożitorju uffiċjali tad-distribuzzjonijiet binarji ta’ NodeSource Enterprise Linux, Fedora, Debian u Ubuntu, li jinżamm mill-websajt Nodejs u ser ikollok bżonn iżżidha mas-sistema tiegħek biex tkun tista’ installa l-aħħar pakketti Nodejs u NPM kif muri.

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

Pass 2: Ħolqien ta 'Applikazzjoni Nodejs

Għal skop ta 'dimostrazzjoni, se nkunu qed noħolqu applikazzjoni kampjun imsejħa sysmon, li se taħdem fuq il-port 5000 kif muri.

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

Ikkopja u waħħal il-kodiċi li ġej fil-fajl server.js (issostitwixxi 192.168.43.31 bl-IP tas-server tiegħek).

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

Issejvja l-fajl u oħroġ.

Issa ibda l-applikazzjoni tan-node tiegħek billi tuża l-kmand li ġej (agħfas Ctrl+x biex ittemmha).

$ 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

Issa tiftaħ browser u aċċess għall-applikazzjoni tiegħek fil-URL http://198.168.43.31:5000.

Pass 3: Installa Nginx Reverse Proxy fil-Linux

Aħna se ninstallaw l-aħħar verżjoni ta 'Nginx mir-repożitorju uffiċjali, kif muri hawn taħt.

Oħloq fajl imsejjaħ /etc/apt/sources.list.d/nginx.list u żid il-linji li ġejjin miegħu.

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

Sussegwentement, żid iċ-ċavetta tal-iffirmar tar-repożitorju, aġġorna l-indiċi tal-pakkett tas-sistema tiegħek u installa l-pakkett nginx kif ġej.

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

Oħloq fajl bl-isem /etc/yum.repos.d/nginx.repo u waħħal waħda mill-konfigurazzjonijiet hawn taħt.

[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

Nota: Minħabba d-differenzi bejn kif CentOS u RHEL, huwa meħtieġ li tissostitwixxi $releasever jew b'6 (għal 6.x) jew 7 (għal 7.x), skont il-verżjoni tal-OS tiegħek.

Sussegwentement, żid iċ-ċavetta tal-iffirmar tar-repożitorju u installa l-pakkett nginx kif muri.

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

Wara li tinstalla Nginx b'suċċess, ibdah, ippermettih li jibda awtomatikament fil-boot tas-sistema u ċċekkja jekk huwiex qed jaħdem.

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

Jekk qed tħaddem firewall tas-sistema, għandek bżonn tiftaħ il-port 80 (HTTP), 443 (HTTPS) u 5000 (app Node), li s-server tal-web jisma' għal talbiet ta' konnessjoni tal-klijenti.

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

Pass 4: Ikkonfigura Nginx bħala Reverse Proxy Għall-Applikazzjoni Nodejs

Issa oħloq fajl tal-konfigurazzjoni tal-blokk tas-server għall-app Node tiegħek taħt /etc/nginx/conf.d/ kif muri.

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

Ikkopja u waħħal il-konfigurazzjoni li ġejja (biddlu 192.168.43.31 bl-IP tas-server tiegħek u tecmint.lan bl-isem tad-dominju tiegħek).

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

Issejvja l-bidliet u oħroġ mill-fajl.

Fl-aħħarnett, ibda mill-ġdid is-servizz Nginx biex taffettwa l-bidliet riċenti.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Pass 5: Aċċess għall-Applikazzjoni Nodejs permezz tal-Web Browser

Issa għandek tkun tista' taċċessa l-app Node tiegħek mingħajr ma tipprovdi l-port li tkun qed tisma' fuqu, fil-URL: dan huwa mod konvenjenti ħafna għall-utenti biex jaċċessawha.

http://sysmon.tecmint.lan 

Biex l-isem tad-dominju tat-test tiegħek jaħdem, trid issettja d-DNS lokali billi tuża l-fajl /etc/hosts, tiftaħha u żid il-linja hawn taħt fiha (ftakar li tibdel 192.168.43.31 bl-IP tas-server tiegħek u tecmint.lan bl-isem tad-doamin tiegħek bħal qabel).

192.168.43.31 sysmon.tecmint.lan

Dak kollox! F'dan l-artikolu, urejna kif tikkonfigura Nginx bħala prokura inversa għall-applikazzjonijiet Nodejs. Uża l-formola ta' feedback hawn taħt biex tistaqsi kwalunkwe mistoqsija jew taqsam il-ħsibijiet tiegħek dwar dan l-artikolu.