Giunsa ang Pag-configure sa Nginx ingon Reverse Proxy alang sa Nodejs App


Ang Nodejs usa ka libre nga open source, gaan, scalable ug episyente nga JavaScript framework nga gitukod sa V8 JavaScript engine sa Chrome, ug naggamit ug event-driven, non-blocking nga modelo sa I/O. Ang Nodejs anaa na karon bisan asa, ug nahimong popular kaayo alang sa pagpalambo sa software gikan sa mga website, web apps ngadto sa network apps ug uban pa.

Ang Nginx usa ka open source, high-performance HTTP server, load balancer ug reverse proxy software. Kini adunay usa ka prangka nga sinultian nga pag-configure nga dali nga ma-configure. Niini nga artikulo, ipakita namon kung giunsa ang pag-configure sa Nginx ingon usa ka reverse proxy alang sa mga aplikasyon sa Nodejs.

Hinumdomi: Kung ang imong sistema nagdagan na sa Nodejs ug NPM, ug gipadagan ang imong app sa usa ka piho nga pantalan, diretso sa Lakang 4.

Lakang 1: Pag-instalar sa Nodejs ug NPM sa Linux

Ang pinakabag-o nga bersyon sa Node.js ug NPM anaa aron ma-install gikan sa opisyal nga NodeSource Enterprise Linux, Fedora, Debian ug Ubuntu binary distributions repository, nga gipadayon sa Nodejs website ug kinahanglan nimo nga idugang kini sa imong sistema aron makahimo i-install ang pinakabag-o nga Nodejs ug NPM nga mga pakete sama sa gipakita.

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

Lakang 2: Paghimo og Nodejs Application

Alang sa katuyoan sa pagpakita, maghimo kami usa ka sample nga aplikasyon nga gitawag ug sysmon, nga modagan sa port 5000 sama sa gipakita.

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

Kopyaha ug idikit ang mosunod nga code sa server.js file (ilisan ang 192.168.43.31 sa imong server 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}/`);
});

I-save ang file ug paggawas.

Karon sugdi ang imong aplikasyon sa node gamit ang mosunod nga sugo (ipindot ang Ctrl+x aron tapuson kini).

$ 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

Karon ablihi ang browser ug i-access ang imong aplikasyon sa URL http://198.168.43.31:5000.

Lakang 3: I-install ang Nginx Reverse Proxy sa Linux

Atong i-install ang pinakabag-o nga bersyon sa Nginx gikan sa opisyal nga repository, sama sa gipakita sa ubos.

Paghimo og file nga gitawag og /etc/apt/sources.list.d/nginx.list ug idugang ang mosunod nga mga linya niini.

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

Sunod, idugang ang repository signing key, i-update ang imong system package index ug i-install ang nginx package sama sa mosunod.

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

Paghimo og file nga ginganlan og /etc/yum.repos.d/nginx.repo ug idikit ang usa sa mga configuration sa ubos.

[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

Mubo nga sulat: Tungod sa mga kalainan tali kung giunsa ang CentOS ug RHEL, gikinahanglan nga ilisan ang $releasever sa 6 (alang sa 6.x) o 7 (alang sa 7.x), depende sa imong bersyon sa OS.

Sunod, idugang ang repository signing key ug i-install ang nginx package sama sa gipakita.

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

Human sa malampuson nga pag-instalar sa Nginx, sugdi kini, i-enable kini sa auto-start sa system boot ug susiha kung kini nagdagan na.

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

Kung nagpadagan ka og system firewall, kinahanglan nimo nga ablihan ang port 80 (HTTP), 443 (HTTPS) ug 5000 (Node app), nga gipamati sa web server alang sa mga hangyo sa koneksyon sa kliyente.

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

Lakang 4: I-configure ang Nginx isip Reverse Proxy Para sa Nodejs Application

Karon paghimo ug server block configuration file para sa imong Node app ubos sa /etc/nginx/conf.d/ sama sa gipakita.

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

Kopyaha ug idikit ang mosunod nga configuration (ilisan ang 192.168.43.31 sa imong server IP ug tecmint.lan sa imong domain name).

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

I-save ang mga pagbag-o ug paggawas sa file.

Sa katapusan, i-restart ang serbisyo sa Nginx aron ma-epekto ang bag-ong mga pagbag-o.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Lakang 5: Pag-access sa Nodejs Application pinaagi sa Web Browser

Karon kinahanglan nimo nga ma-access ang imong Node app nga wala gihatag ang pantalan nga gipamati niini, sa URL: kini usa ka labi ka kombenyente nga paagi alang sa mga tiggamit nga ma-access kini.

http://sysmon.tecmint.lan 

Para magtrabaho ang imong test domain name, kinahanglan nimo nga i-setup ang local DNS gamit ang /etc/hosts file, ablihi kini ug idugang ang linya sa ubos niini (hinumdomi nga usbon ang 192.168.43.31 sa imong server IP ug tecmint.lan sa imong domain name sama kaniadto).

192.168.43.31 sysmon.tecmint.lan

Kana lang! Niini nga artikulo, gipakita namon kung giunsa ang pag-configure sa Nginx ingon usa ka reverse proxy alang sa mga aplikasyon sa Nodejs. Gamita ang porma sa feedback sa ubos aron makapangutana o ipaambit ang imong mga hunahuna bahin sa kini nga artikulo.