Kako konfigurirati Nginx kot povratni proxy za aplikacijo Nodejs


Nodejs je brezplačen odprtokodni, lahek, razširljiv in učinkovit okvir JavaScript, zgrajen na Chromovem motorju JavaScript V8, in uporablja V/I model, ki ne blokira dogodkov. Nodejs je zdaj povsod in je postal tako priljubljen za razvoj programske opreme od spletnih mest, spletnih aplikacij do omrežnih aplikacij in še več.

Nginx je odprtokodni, zmogljiv strežnik HTTP, program za uravnoteženje obremenitve in povratni proxy. Ima preprost jezik za konfiguracijo, ki olajša konfiguracijo. V tem članku bomo pokazali, kako konfigurirati Nginx kot povratni proxy za aplikacije Nodejs.

Opomba: Če vaš sistem že deluje z Nodejsom in NPM -jem in vaša aplikacija deluje na določenih vratih, pojdite naravnost na 4. korak.

1. korak: Namestitev Nodejsa in NPM v Linux

Najnovejša različica Node.js in NPM je na voljo za namestitev iz uradnega skladišča binarnih distribucij NodeSource Enterprise Linux, Fedora, Debian in Ubuntu, ki ga vzdržuje spletno mesto Nodejs, zato ga boste morali dodati v sistem, da boste lahko namestite najnovejše pakete Nodejs in NPM, kot je prikazano.

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

2. korak: Ustvarjanje aplikacije Nodejs

Za predstavitvene namene bomo ustvarili vzorčno aplikacijo z imenom “sysmon”, ki bo delovala na vratih 5000, kot je prikazano.

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

Kopirajte in prilepite naslednjo kodo v datoteko server.js (192.168.43.31 zamenjajte z IP strežnika).

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

Shranite datoteko in zapustite.

Zdaj zaženite aplikacijo vozlišča z naslednjim ukazom (pritisnite Ctrl+x , da jo prekinete).

$ 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

Zdaj odprite brskalnik in dostopajte do svoje aplikacije na naslovu http://198.168.43.31:5000 .

3. korak: Namestite Nginx Reverse Proxy v Linux

Najnovejšo različico Nginxa bomo namestili iz uradnega skladišča, kot je prikazano spodaj.

Ustvarite datoteko /etc/apt/sources.list.d/nginx.list in ji dodajte naslednje vrstice.

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

Nato dodajte ključ za podpis skladišča, posodobite indeks sistemskega paketa in namestite paket nginx na naslednji način.

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

Ustvarite datoteko z imenom /etc/yum.repos.d/nginx.repo in prilepite eno od spodnjih konfiguracij.

[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

Opomba: Zaradi razlik med načinom CentOS in RHEL je treba $releasever zamenjati s 6 (za 6.x) ali 7 (za 7.x), odvisno od različice operacijskega sistema.

Nato dodajte ključ za podpis skladišča in namestite paket nginx, kot je prikazano.

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

Ko uspešno namestite Nginx, ga zaženite, omogočite samodejni zagon ob zagonu sistema in preverite, ali deluje in deluje.

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

Če uporabljate sistemski požarni zid, morate odpreti vrata 80 (HTTP), 443 (HTTPS) in 5000 (aplikacija Node), ki jih spletni strežnik posluša za zahteve po povezavi odjemalca.

---------- 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. korak: Nginx konfigurirajte kot povratni proxy za aplikacijo Nodejs

Zdaj ustvarite konfiguracijsko datoteko strežniškega bloka za aplikacijo Node pod /etc/nginx/conf.d/, kot je prikazano.

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

Kopirajte in prilepite naslednjo konfiguracijo (spremenite 192.168.43.31 z IP strežnika in tecmint.lan z imenom domene).

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

Shranite spremembe in zapustite datoteko.

Nazadnje znova zaženite storitev Nginx, da izvedete nedavne spremembe.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

5. korak: Dostop do aplikacije Nodejs prek spletnega brskalnika

Zdaj bi morali imeti dostop do aplikacije Node, ne da bi v URL -ju zagotovili vrata, na katerih posluša: to je za uporabnike zelo priročen način dostopa.

http://sysmon.tecmint.lan 

Če želite, da vaše ime domene deluje, morate z datoteko /etc /hosts nastaviti lokalni DNS, ga odpreti in vanj dodati spodnjo vrstico (ne pozabite spremeniti 192.168.43.31 z IP -jem strežnika in tecmint.lan z vašim domenskim imenom kot prej).

192.168.43.31 sysmon.tecmint.lan

To je vse! V tem članku smo pokazali, kako konfigurirati Nginx kot povratni proxy za aplikacije Nodejs. Uporabite spodnji obrazec za povratne informacije, če želite zastaviti kakršno koli vprašanje ali izraziti svoje mnenje o tem članku.