Slik konfigurerer du Nginx som omvendt proxy for Nodejs-appen


Nodejs er et gratis åpen kildekode, lett, skalerbart og effektivt JavaScript-rammeverk bygget på Chromes V8 JavaScript-motor, og bruker en hendelsesdrevet, ikke-blokkerende I/O-modell. Nodejs er nå overalt, og har blitt så populært for å utvikle programvare fra nettsider, nettapper til nettverksapper og mer.

Nginx er en åpen kildekode, høyytelses HTTP-server, lastbalanserer og omvendt proxy-programvare. Den har et enkelt konfigurasjonsspråk som gjør det enkelt å konfigurere. I denne artikkelen vil vi vise hvordan du konfigurerer Nginx som en omvendt proxy for Nodejs-applikasjoner.

Les også: Den ultimate guiden for å sikre, herde og forbedre ytelsen til Nginx Web Server

Merk: Hvis systemet ditt allerede kjører med Nodejs og NPM, og har appen din som kjører på en bestemt port , gå rett til Trinn 4.

Trinn 1: Installere Nodejs og NPM i Linux

Den siste versjonen av Node.js og NPM er tilgjengelig for installasjon fra det offisielle NodeSource Enterprise Linux-, Fedora-, Debian- og Ubuntu-depotet for binære distribusjoner, som vedlikeholdes av Nodejs-nettstedet og du må legge det til systemet ditt for å kunne installere de nyeste Nodejs- og NPM-pakkene som vist.

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

På CentOS/RHEL og 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 -

Trinn 2: Opprette en Nodejs-applikasjon

For demonstrasjonsformål vil vi lage et eksempelprogram kalt “sysmon”, som vil kjøre på port 5000 som vist.

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

Kopier og lim inn følgende kode i server.js-filen (erstatt 192.168.43.31 med server-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}/`);
});

Lagre filen og avslutt.

Start nå nodeapplikasjonen ved å bruke følgende kommando (trykk Ctrl+x for å avslutte den).

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

Åpne nå en nettleser og få tilgang til applikasjonen din på URL-en http://198.168.43.31:5000.

Trinn 3: Installer Nginx Reverse Proxy i Linux

Vi vil installere den nyeste versjonen av Nginx fra det offisielle depotet, som vist nedenfor.

På Debian/Ubuntu

Lag en fil kalt /etc/apt/sources.list.d/nginx.list og legg til følgende linjer.

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

Deretter legger du til depotsigneringsnøkkelen, oppdaterer systempakkeindeksen og installer nginx-pakken som følger.

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

På CentOS/RHEL og Fedora

Lag en fil med navnet /etc/yum.repos.d/nginx.repo og lim inn en av konfigurasjonene nedenfor.

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

Merk: På grunn av forskjeller mellom hvordan CentOS og RHEL, er det nødvendig å erstatte $releasever med enten 6 (for 6.x) eller 7 (for 7.x), avhengig av OS-versjonen.

Deretter legger du til depotsigneringsnøkkelen og installer nginx-pakken som vist.

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

Etter å ha installert Nginx, start den, aktiver den til å starte automatisk ved systemoppstart og sjekk om den er oppe og kjører.

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

Hvis du kjører en systembrannmur, må du åpne port 80 (HTTP), 443 (HTTPS) og 5000 (Node-app), som webserveren lytter på for klienttilkoblingsforespørsler.

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

Trinn 4: Konfigurer Nginx som omvendt proxy for Nodejs-applikasjon

Lag nå en konfigurasjonsfil for serverblokk for Node-appen din under /etc/nginx/conf.d/ som vist.

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

Kopier og lim inn følgende konfigurasjon (endre 192.168.43.31 med server-IP og tecmint.lan med domenenavnet ditt).

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

Lagre endringene og avslutt filen.

Til slutt, start Nginx-tjenesten på nytt for å utføre de siste endringene.

sudo systemctl restart nginx
OR
systemctl restart nginx

Trinn 5: Få tilgang til Nodejs-applikasjonen via nettleseren

Nå skal du kunne få tilgang til Node-appen uten å oppgi porten den lytter på, i URL-en: dette er en veldig praktisk måte for brukere å få tilgang til den.

http://sysmon.tecmint.lan 

For at testdomenenavnet ditt skal fungere, må du konfigurere lokal DNS ved hjelp av /etc/hosts-filen, åpne den og legg til linjen nedenfor i den (husk å endre 192.168.43.31) med serverens IP og tecmint.lan med ditt domenenavn som før).

192.168.43.31 sysmon.tecmint.lan

Det er alt! I denne artikkelen viste vi hvordan du konfigurerer Nginx som en omvendt proxy for Nodejs-applikasjoner. Bruk tilbakemeldingsskjemaet nedenfor for å stille spørsmål eller dele tankene dine om denne artikkelen.