Otu esi ahazi Nginx ka ọ bụrụ Proxy Reverse maka ngwa Nodejs


Nodejs bụ ebe mepere emepe n'efu, dị arọ, nke nwere ike ịgbatị ma rụọ ọrụ nke ọma nke arụnyere na Chrome's V8 JavaScript engine, ma na-eji ihe omume na-akwalite, ụdị I/O anaghị egbochi. Nodejs dị ugbu a n'ebe niile, ma bụrụkwa nke a ma ama maka ịmepụta ngwanrọ sitere na weebụsaịtị, ngwa weebụ gaa na ngwa netwọkụ na ndị ọzọ.

Nginx bụ isi mmalite mepere emepe, ihe nkesa HTTP na-arụ ọrụ dị elu, onye na-ebu ibu na ngwanrọ proxy. Ọ nwere asụsụ nhazi kwụ ọtọ na-eme ka ọ dị mfe ịhazi. N'isiokwu a, anyị ga-egosi otu esi ahazi Nginx ka ọ bụrụ proxy maka ngwa Nodejs.

Mara: Ọ bụrụ na sistemụ gị ejirila Nodejs na NPM na-arụ ọrụ, ma nwee ngwa gị na-agba n'otu ọdụ ụgbọ mmiri, gaa na Nzọụkwụ 4 ozugbo.

Kwụpụ 1: Wụnye Nodejs na NPM na Linux

Ụdị Node.js na NPM kachasị ọhụrụ dị maka ịwụnye site na ụlọ ọrụ NodeSource Enterprise Linux, Fedora, Debian na Ubuntu ọnụọgụ abụọ nkesa, nke webụsaịtị Nodejs na-echekwa ma ị ga-achọ itinye ya na sistemụ gị ka ị nwee ike. wụnye ngwugwu Nodejs na NPM kachasị ọhụrụ dịka egosiri.

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

Kwụpụ 2: Mepụta ngwa Nodejs

Maka ebumnuche ngosi, anyị ga-ekepụta ngwa nlele akpọrọ “sysmon”, nke ga-agba na ọdụ ụgbọ mmiri 5000 dị ka egosiri.

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

Detuo na mado koodu a na faịlụ server.js (dochie 192.168.43.31 na IP nkesa gị).

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

Chekwaa faịlụ wee pụọ.

Ugbu a malite ngwa node gị site na iji iwu a (pịa Ctrl+x ka ịkwụsị ya).

$ 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

Ugbu a mepee ihe nchọgharị wee nweta ngwa gị na URL http://198.168.43.31:5000.

Kwụpụ 3: Wụnye Nginx Reverse Proxy na Linux

Anyị ga-etinye ụdị Nginx kachasị ọhụrụ site na ebe nchekwa gọọmentị, dị ka egosiri n'okpuru.

Mepụta faịlụ akpọrọ /etc/apt/sources.list.d/nginx.list ma tinye ahịrị ndị a na ya.

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

Na-esote, tinye igodo mbinye aka n'ebe nchekwa, melite ngwungwu sistemụ gị wee wụnye ngwugwu nginx dị ka ndị a.

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

Mepụta faịlụ aha ya bụ /etc/yum.repos.d/nginx.repo wee mado otu nhazi n'okpuru.

[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

Cheta na: N'ihi ọdịiche dị n'etiti otu CentOS na RHEL, ọ dị mkpa iji 6 (maka 6.x) ma ọ bụ 7 (maka 7.x) dochie $releasever, dabere na ụdị OS gị.

Na-esote, tinye igodo nbinye aka na nchekwa wee wụnye nginx ngwugwu dịka egosiri.

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

Mgbe ị wụnye Nginx nke ọma, bido ya, mee ka ọ malite na-akpaghị aka na buut sistemụ wee lelee ma ọ na-arụ ọrụ.

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

Ọ bụrụ na ị na-eji firewall sistemụ, ịkwesịrị imepe ọdụ ụgbọ mmiri 80 (HTTP), 443 (HTTPS) na 5000 (ngwa Node), nke sava weebụ na-ege ntị maka arịrịọ njikọ ndị ahịa.

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

Kwụpụ 4: Hazie Nginx ka ọ bụrụ Proxy Reverse Maka Ngwa Nodejs

Ugbu a mepụta faịlụ nhazi ngọngọ nkesa maka ngwa Node gị n'okpuru /etc/nginx/conf.d/ dị ka egosiri.

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

Detuo na mado nhazi ndị a (gbanwee 192.168.43.31 na IP nkesa gị yana tecmint.lan na aha ngalaba gị).

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

Chekwaa mgbanwe ndị ahụ wee pụọ na faịlụ ahụ.

N'ikpeazụ, malitegharịa ọrụ Nginx iji mee mgbanwe ndị na-adịbeghị anya.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Kwụpụ 5: Nweta ngwa Nodejs site na ihe nchọgharị weebụ

Ugbu a ị ga-enwe ike ịnweta ngwa Node gị na-enyeghị ọdụ ụgbọ mmiri ọ na-ege na URL: nke a bụ ụzọ dị mma maka ndị ọrụ iji nweta ya.

http://sysmon.tecmint.lan 

Ka aha ngalaba ule gị rụọ ọrụ, ịkwesịrị ịtọlite DNS mpaghara site na iji faịlụ /etc/hosts, mepee ya ma tinye ahịrị dị n'okpuru ya (cheta ịgbanwe 192.168.43.31 na IP nkesa gị yana tecmint.lan na aha doamin gị. dị ka ọ dị na mbụ).

192.168.43.31 sysmon.tecmint.lan

Ọ gwụla! N'isiokwu a, anyị gosipụtara otu esi ahazi Nginx ka ọ bụrụ proxy maka ngwa Nodejs. Jiri mpempe nzaghachi n'okpuru jụọ ajụjụ ọ bụla ma ọ bụ kesaa echiche gị gbasara akụkọ a.