Kā konfigurēt Nginx kā apgriezto starpniekserveri lietotnei Nodejs


Nodejs ir bezmaksas atvērtā koda, viegls, pielāgojams un efektīvs JavaScript ietvars, kas veidots uz Chrome V8 JavaScript dzinēja, un izmanto notikumu virzītu, nebloķējošu I/O modeli. Nodejs tagad ir visur, un tas ir kļuvis tik populārs, lai izstrādātu programmatūru no vietnēm, tīmekļa lietotnēm līdz tīkla lietotnēm un daudz ko citu.

Nginx ir atvērtā koda, augstas veiktspējas HTTP serveris, slodzes līdzsvarošanas un apgrieztās starpniekservera programmatūra. Tam ir vienkārša konfigurācijas valoda, kas atvieglo konfigurēšanu. Šajā rakstā mēs parādīsim, kā konfigurēt Nginx kā reverso starpniekserveri Nodejs lietojumprogrammām.

Piezīme. Ja jūsu sistēma jau darbojas ar Nodejs un NPM un jūsu lietotne darbojas noteiktā ostā, pārejiet tieši uz 4. darbību.

1. darbība: Nodejs un NPM instalēšana Linux

Jaunākā Node.js un NPM versija ir pieejama instalēšanai no oficiālās NodeSource Enterprise Linux, Fedora, Debian un Ubuntu bināro izplatīšanas krātuves, kuru uztur Nodejs vietne, un jums būs jāpievieno tā savai sistēmai, lai varētu instalējiet jaunākās Nodejs un NPM pakotnes, kā parādīts.

---------- 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. solis: Nodejs lietojumprogrammas izveide

Demonstrācijas nolūkā mēs izveidosim lietojumprogrammas paraugu ar nosaukumu “sysmon”, kas darbosies 5000. ostā, kā parādīts.

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

Nokopējiet un ielīmējiet šo kodu server.js failā (aizstājiet 192.168.43.31 ar sava servera 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}/`);
});

Saglabājiet failu un izejiet.

Tagad palaidiet mezgla lietojumprogrammu, izmantojot šādu komandu (nospiediet Ctrl + x , lai to pārtrauktu).

$ 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

Tagad atveriet pārlūkprogrammu un piekļūstiet savai lietojumprogrammai vietnē URL http://198.168.43.31:5000 .

3. darbība: instalējiet Nginx Reverse Proxy Linux

Mēs instalēsim jaunāko Nginx versiju no oficiālā repozitorija, kā parādīts zemāk.

Izveidojiet failu ar nosaukumu /etc/apt/sources.list.d/nginx.list un pievienojiet tam šādas rindas.

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

Pēc tam pievienojiet krātuves parakstīšanas atslēgu, atjauniniet sistēmas pakotnes indeksu un instalējiet paketi nginx šādi.

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

Izveidojiet failu ar nosaukumu /etc/yum.repos.d/nginx.repo un ielīmējiet kādu no tālāk norādītajām konfigurācijām.

[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

Piezīme. Tā kā CentOS un RHEL ir atšķirīgas, $releasever ir jāaizstāj ar 6 (par 6.x) vai 7 (uz 7.x) atkarībā no jūsu OS versijas.

Pēc tam pievienojiet krātuves parakstīšanas atslēgu un instalējiet paketi nginx, kā parādīts.

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

Pēc veiksmīgas Nginx instalēšanas palaidiet to, ļaujiet tai automātiski startēt sistēmas sāknēšanas laikā un pārbaudiet, vai tas darbojas un darbojas.

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

Ja izmantojat sistēmas ugunsmūri, ir jāatver ports 80 (HTTP), 443 (HTTPS) un 5000 (Node app), kurus tīmekļa serveris klausās klienta savienojuma pieprasījumiem.

---------- 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. darbība. Konfigurējiet Nginx kā Nodejs lietojumprogrammas reverso starpniekserveri

Tagad izveidojiet sava mezgla lietojumprogrammas servera bloka konfigurācijas failu sadaļā /etc/nginx/conf.d/, kā parādīts.

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

Nokopējiet un ielīmējiet šo konfigurāciju (mainiet 192.168.43.31 ar servera IP un tecmint.lan ar savu domēna nosaukumu).

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

Saglabājiet izmaiņas un izejiet no faila.

Visbeidzot, restartējiet pakalpojumu Nginx, lai veiktu pēdējās izmaiņas.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

5. solis: Piekļūstiet Nodejs lietojumprogrammai, izmantojot tīmekļa pārlūku

Tagad jums vajadzētu būt iespējai piekļūt savai Node lietotnei, nenorādot portu, kuru tā klausās, URL: tas ir daudz ērts veids, kā lietotāji var piekļūt tai.

http://sysmon.tecmint.lan 

Lai jūsu testa domēna nosaukums darbotos, jums jāiestata vietējais DNS, izmantojot failu/etc/hosts, jāatver un jāpievieno zemāk esošā rindiņa (atcerieties mainīt servera IP 192.168.43.31 un ar doamin vārdu tecmint.lan kā iepriekš).

192.168.43.31 sysmon.tecmint.lan

Tas ir viss! Šajā rakstā mēs parādījām, kā konfigurēt Nginx kā reverso starpniekserveri Nodejs lietojumprogrammām. Izmantojiet tālāk sniegto atsauksmju veidlapu, lai uzdotu jautājumus vai dalītos domās par šo rakstu.