Hvernig á að stilla Nginx sem öfugt umboð fyrir Nodejs app


Nodejs er ókeypis opinn uppspretta, léttur, stigstærð og skilvirkur JavaScript rammi byggður á V8 JavaScript vél Chrome og notar atburðadrifið I/O líkan sem ekki hindrar. Nodejs er nú alls staðar og hefur orðið svo vinsælt til að þróa hugbúnað frá vefsíðum, vefforritum til netforrita og fleira.

Nginx er opinn uppspretta, afkastamikill HTTP netþjónn, álagsjafnari og öfugur proxy hugbúnaður. Það hefur einfalt stillingartungumál sem gerir það auðvelt að stilla. Í þessari grein munum við sýna hvernig á að stilla Nginx sem öfugt umboð fyrir Nodejs forrit.

Athugið: Ef kerfið þitt er þegar í gangi með Nodejs og NPM og hefur forritið þitt í gangi á ákveðnu tengi, farðu beint í skref 4.

Skref 1: Uppsetning Nodejs og NPM í Linux

Hægt er að setja upp nýjustu útgáfuna af Node.js og NPM frá opinberu NodeSource Enterprise Linux, Fedora, Debian og Ubuntu tvöfalda dreifingargeymslunni, sem er viðhaldið af vefsíðu Nodejs og þú þarft að bæta því við kerfið þitt til að geta settu upp nýjustu Nodejs og NPM pakkana eins og sýnt er.

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

Skref 2: Að búa til Nodejs forrit

Í sýnikennsluskyni munum við búa til sýnishornsforrit sem kallast „sysmon“, sem mun keyra á höfn 5000 eins og sýnt er.

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

Afritaðu og límdu eftirfarandi kóða í server.js skrána (skiptu 192.168.43.31 út fyrir IP-tölu netþjónsins þíns).

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

Vistaðu skrána og hættu.

Ræstu nú hnútaforritið þitt með því að nota eftirfarandi skipun (ýttu á Ctrl+x til að loka því).

$ 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

Opnaðu nú vafra og opnaðu forritið þitt á slóðinni http://198.168.43.31:5000.

Skref 3: Settu upp Nginx Reverse Proxy í Linux

Við munum setja upp nýjustu útgáfuna af Nginx frá opinberu geymslunni, eins og sýnt er hér að neðan.

Búðu til skrá sem heitir /etc/apt/sources.list.d/nginx.list og bættu eftirfarandi línum við hana.

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

Næst skaltu bæta við geymslulyklinum, uppfæra kerfispakkavísitöluna þína og setja upp nginx pakkann eins og hér segir.

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

Búðu til skrá sem heitir /etc/yum.repos.d/nginx.repo og límdu eina af stillingunum hér að neðan.

[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

Athugið: Vegna mismunandi hvernig CentOS og RHEL er, er nauðsynlegt að skipta út $releasever fyrir annað hvort 6 (fyrir 6.x) eða 7 (fyrir 7.x), allt eftir stýrikerfisútgáfunni þinni.

Næst skaltu bæta við geymslulyklinum og setja upp nginx pakkann eins og sýnt er.

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

Eftir að Nginx hefur verið sett upp með góðum árangri skaltu ræsa það, gera það kleift að ræsast sjálfkrafa við ræsingu kerfisins og athuga hvort það sé í gangi.

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

Ef þú ert að keyra kerfiseldvegg þarftu að opna port 80 (HTTP), 443 (HTTPS) og 5000 (Node app), sem vefþjónninn hlustar á fyrir beiðnir um tengingu viðskiptavinarins.

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

Skref 4: Stilltu Nginx sem öfugt umboð fyrir Nodejs forrit

Búðu til stillingarskrá fyrir netþjónblokk fyrir Node appið þitt undir /etc/nginx/conf.d/ eins og sýnt er.

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

Afritaðu og límdu eftirfarandi uppsetningu (breyttu 192.168.43.31 með IP-tölu netþjónsins og tecmint.lan með léninu þínu).

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

Vistaðu breytingarnar og lokaðu skránni.

Að lokum skaltu endurræsa Nginx þjónustuna til að framkvæma nýlegar breytingar.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Skref 5: Fáðu aðgang að Nodejs forritinu í gegnum vafra

Nú ættir þú að geta fengið aðgang að Node appinu þínu án þess að gefa upp gáttina sem það hlustar á, í vefslóðinni: þetta er mjög þægileg leið fyrir notendur að fá aðgang að því.

http://sysmon.tecmint.lan 

Til að prófunarlénið þitt virki þarftu að setja upp staðbundið DNS með /etc/hosts skránni, opna hana og bæta línunni fyrir neðan í hana (mundu að breyta 192.168.43.31 með IP-tölu netþjónsins og tecmint.lan með lénsheitinu þínu eins og áður).

192.168.43.31 sysmon.tecmint.lan

Það er allt og sumt! Í þessari grein sýndum við hvernig á að stilla Nginx sem öfugt umboð fyrir Nodejs forrit. Notaðu athugasemdareyðublaðið hér að neðan til að spyrja spurninga eða deila hugsunum þínum um þessa grein.