Com configurar Nginx com a servidor intermediari invers per a l'aplicació Nodejs


Nodejs és un marc de JavaScript de codi obert gratuït, lleuger, escalable i eficaç construït al motor JavaScript V8 de Chrome i utilitza un model d'E/S sense bloqueig i basat en esdeveniments. Nodejs és ara a tot arreu i s'ha tornat tan popular per desenvolupar programari des de llocs web, aplicacions web fins a aplicacions de xarxa i molt més.

Nginx és un servidor HTTP d'alt rendiment de codi obert, equilibrador de càrrega i programari de servidor intermediari invers. Té un llenguatge de configuració senzill que fa que sigui fàcil de configurar. En aquest article, mostrarem com configurar Nginx com a servidor intermediari invers per a les aplicacions de Nodejs.

Nota: si el vostre sistema ja s'executa amb Nodejs i NPM i la vostra aplicació s'executa en un port determinat, aneu directament al pas 4.

Pas 1: instal·lació de Nodejs i NPM a Linux

L'última versió de Node.js i NPM està disponible per instal·lar-se des del dipòsit oficial de distribucions binaris de NodeSource Enterprise Linux, Fedora, Debian i Ubuntu, que es manté al lloc web de Nodejs i l'haureu d'afegir al vostre sistema per poder fer-ho. instal·leu els darrers paquets Nodejs i NPM tal com es mostra.

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

Pas 2: Creació d'una aplicació Nodejs

Amb finalitats de demostració, crearem una aplicació de mostra anomenada sysmon, que s'executarà al port 5000 tal com es mostra.

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

Copieu i enganxeu el codi següent al fitxer server.js (substituïu 192.168.43.31 per la IP del vostre servidor).

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

Desa el fitxer i surt.

Ara inicieu la vostra aplicació de nodes amb l'ordre següent (premeu Ctrl+x per finalitzar-la).

$ 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

Ara obriu un navegador i accediu a la vostra aplicació a l'URL http://198.168.43.31:5000.

Pas 3: instal·leu Nginx Reverse Proxy a Linux

Instal·larem la darrera versió de Nginx des del dipòsit oficial, tal com es mostra a continuació.

Creeu un fitxer anomenat /etc/apt/sources.list.d/nginx.list i afegiu-hi les línies següents.

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

A continuació, afegiu la clau de signatura del dipòsit, actualitzeu l'índex de paquets del vostre sistema i instal·leu el paquet nginx de la següent manera.

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

Creeu un fitxer anomenat /etc/yum.repos.d/nginx.repo i enganxeu una de les configuracions següents.

[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

Nota: a causa de les diferències entre com CentOS i RHEL, cal substituir $releasever per 6 (per a 6.x) o 7 (per a 7.x), depenent de la versió del vostre sistema operatiu.

A continuació, afegiu la clau de signatura del dipòsit i instal·leu el paquet nginx tal com es mostra.

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

Després d'instal·lar correctament Nginx, inicieu-lo, activeu-lo per iniciar-se automàticament a l'arrencada del sistema i comproveu si està en funcionament.

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

Si esteu executant un tallafoc del sistema, heu d'obrir el port 80 (HTTP), 443 (HTTPS) i 5000 (aplicació Node), que el servidor web escolta per a les sol·licituds de connexió del client.

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

Pas 4: configureu Nginx com a servidor intermediari invers per a l'aplicació Nodejs

Ara creeu un fitxer de configuració de bloc de servidor per a la vostra aplicació Node a /etc/nginx/conf.d/ tal com es mostra.

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

Copieu i enganxeu la configuració següent (canvieu 192.168.43.31 amb la IP del vostre servidor i tecmint.lan amb el vostre nom de domini).

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

Deseu els canvis i sortiu del fitxer.

Finalment, reinicieu el servei Nginx per efectuar els canvis recents.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Pas 5: accediu a l'aplicació Nodejs mitjançant el navegador web

Ara hauríeu de poder accedir a la vostra aplicació Node sense proporcionar el port on escolta, a l'URL: aquesta és una manera molt còmoda perquè els usuaris hi accedeixin.

http://sysmon.tecmint.lan 

Perquè el vostre nom de domini de prova funcioni, heu de configurar el DNS local mitjançant el fitxer /etc/hosts, obrir-lo i afegir-hi la línia següent (recordeu canviar 192.168.43.31 amb la IP del vostre servidor i tecmint.lan amb el vostre nom de domini). com abans).

192.168.43.31 sysmon.tecmint.lan

Això és tot! En aquest article, vam mostrar com configurar Nginx com a servidor intermediari invers per a les aplicacions de Nodejs. Utilitzeu el formulari de comentaris següent per fer qualsevol pregunta o compartir les vostres opinions sobre aquest article.