Kaip sukonfigūruoti „Nginx“ kaip atvirkštinį tarpinį serverį „Nodejs“ programai


Nodejs yra nemokama atvirojo kodo, lengva, keičiamo dydžio ir efektyvi „JavaScript“ sistema, sukurta naudojant „Chrome“ V8 „JavaScript“ variklį ir naudoja įvykiais pagrįstą, neblokuojantį įvesties/išvesties modelį. „Nodejs“ dabar yra visur ir tapo toks populiarus kuriant programinę įrangą nuo svetainių, žiniatinklio programų iki tinklo programų ir kt.

Nginx yra atvirojo kodo, didelio našumo HTTP serveris, apkrovos balansavimo priemonė ir atvirkštinio tarpinio serverio programinė įranga. Jame yra paprasta konfigūravimo kalba, todėl ją lengva konfigūruoti. Šiame straipsnyje parodysime, kaip sukonfigūruoti „Nginx“ kaip atvirkštinį „Nodejs“ programų tarpinį serverį.

Taip pat skaitykite: galutinis vadovas, kaip apsaugoti, sustiprinti ir pagerinti Nginx žiniatinklio serverio veikimą

Pastaba: jei sistema jau veikia su Nodejs ir NPM, o programa veikia tam tikrame prievade , pereikite tiesiai prie 4 veiksmo.

1 veiksmas: „Nodejs“ ir „NPM“ diegimas sistemoje „Linux“.

Naujausią Node.js ir NPM versiją galima įdiegti iš oficialios NodeSource Enterprise Linux, Fedora, Debian ir Ubuntu dvejetainių paskirstymų saugyklos, kurią prižiūri Nodejs svetainė ir turėsite jį pridėti prie savo sistemos, kad galėtumėte įdiegti naujausius Nodejs ir NPM paketus, kaip parodyta.

„Debian“/„Ubuntu“.

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

„CentOS/RHEL“ ir „Fedora“.

---------- 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 veiksmas: „Nodejs“ programos kūrimas

Demonstravimo tikslais sukursime pavyzdinę programą, pavadintą "sysmon", kuri veiks 5000 prievade, kaip parodyta.

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

Nukopijuokite ir įklijuokite toliau pateiktą kodą į failą server.js (pakeiskite 192.168.43.31 savo serverio 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šsaugokite failą ir išeikite.

Dabar paleiskite mazgo programą naudodami šią komandą (paspauskite Ctrl+x, kad ją užbaigtumėte).

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

Dabar atidarykite naršyklę ir pasiekite programą adresu http://198.168.43.31:5000.

3 veiksmas: įdiekite „Nginx Reverse Proxy“ sistemoje „Linux“.

Įdiegsime naujausią Nginx versiją iš oficialios saugyklos, kaip parodyta toliau.

„Debian“/„Ubuntu“.

Sukurkite failą pavadinimu /etc/apt/sources.list.d/nginx.list ir pridėkite prie jo šias eilutes.

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

Tada pridėkite saugyklos pasirašymo raktą, atnaujinkite sistemos paketo indeksą ir įdiekite nginx paketą taip.

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

„CentOS/RHEL“ ir „Fedora“.

Sukurkite failą pavadinimu /etc/yum.repos.d/nginx.repo ir įklijuokite vieną iš toliau pateiktų konfigūracijų.

CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

Pastaba: dėl CentOS ir RHEL skirtumų, $releasever reikia pakeisti bet kuriuo iš 6 (skirta 6.x) arba 7 (skirta 7.x), atsižvelgiant į jūsų OS versiją.

Tada pridėkite saugyklos pasirašymo raktą ir įdiekite nginx paketą, kaip parodyta.

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

Sėkmingai įdiegę Nginx, paleiskite jį, įgalinkite automatinį paleidimą sistemos paleidimo metu ir patikrinkite, ar jis veikia.

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

Jei naudojate sistemos užkardą, turite atidaryti prievadą 80 (HTTP), 443 (HTTPS) ir 5000 (mazgo programa), kurį žiniatinklio serveris klauso kliento prisijungimo užklausų.

---------- 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 veiksmas: sukonfigūruokite „Nginx“ kaip atvirkštinį tarpinį serverį „Nodejs“ programai

Dabar sukurkite savo Node programos serverio bloko konfigūracijos failą /etc/nginx/conf.d/, kaip parodyta.

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

Nukopijuokite ir įklijuokite šią konfigūraciją (pakeiskite 192.168.43.31 savo serverio IP ir tecmint.lan savo domeno pavadinimu).

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šsaugokite pakeitimus ir išeikite iš failo.

Galiausiai iš naujo paleiskite „Nginx“ paslaugą, kad atliktumėte naujausius pakeitimus.

sudo systemctl restart nginx
OR
systemctl restart nginx

5 veiksmas: pasiekite „Nodejs“ programą naudodami žiniatinklio naršyklę

Dabar turėtumėte turėti galimybę pasiekti „Node“ programą nenurodydami prievado, kurio ji klauso, URL: tai labai patogus būdas vartotojams ją pasiekti.

http://sysmon.tecmint.lan 

Kad jūsų bandomojo domeno pavadinimas veiktų, turite nustatyti vietinį DNS naudodami failą /etc/hosts, atidaryti jį ir pridėti žemiau esančią eilutę (nepamirškite pakeisti 192.168.43.31). su savo serverio IP ir tecmint.lan su savo doamino vardu, kaip ir anksčiau).

192.168.43.31 sysmon.tecmint.lan

Tai viskas! Šiame straipsnyje mes parodėme, kaip sukonfigūruoti „Nginx“ kaip atvirkštinį „Nodejs“ programų tarpinį serverį. Naudokite toliau pateiktą atsiliepimų formą, jei norite užduoti klausimų arba pasidalinti mintimis apie šį straipsnį.