Sådan konfigureres Nginx som omvendt proxy til Nodejs-appen


Nodejs er en gratis open source, let, skalerbar og effektiv JavaScript-ramme bygget på Chromes V8 JavaScript-motor og bruger en hændelsesdrevet, ikke-blokerende I/O-model. Nodejs er nu overalt og er blevet så populær til udvikling af software fra websteder, webapps til netværksapps og mere.

Nginx er en open source, højtydende HTTP-server, load balancer og reverse proxy-software. Det har et ligetil konfigurationssprog, der gør det nemt at konfigurere. I denne artikel viser vi, hvordan du konfigurerer Nginx som en omvendt proxy til Nodejs-applikationer.

Bemærk: Hvis dit system allerede kører med Nodejs og NPM, og hvis din app kører på en bestemt port, skal du gå direkte til trin 4.

Trin 1: Installation af Nodejs og NPM i Linux

Den nyeste version af Node.js og NPM er tilgængelig for installation fra det officielle NodeSource Enterprise Linux, Fedora, Debian og Ubuntu binære distributionslager, som vedligeholdes af Nodejs-webstedet, og du bliver nødt til at tilføje det til dit system for at være i stand til installer de nyeste Nodejs- og NPM-pakker som vist.

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

Trin 2: Oprettelse af en Nodejs-applikation

Til demonstrationsformål opretter vi en prøveapplikation kaldet “sysmon”, som kører på port 5000 som vist.

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

Kopier og indsæt følgende kode i filen server.js (udskift 192.168.43.31 med din 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}/`);
});

Gem filen og afslut.

Start nu din node-applikation ved hjælp af følgende kommando (tryk Ctrl + x for at afslutte 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

Åbn nu en browser, og få adgang til din applikation på URL http://198.168.43.31:5000 .

Trin 3: Installer Nginx Reverse Proxy i Linux

Vi installerer den nyeste version af Nginx fra det officielle lager, som vist nedenfor.

Opret en fil kaldet /etc/apt/sources.list.d/nginx.list og tilføj følgende linjer til den.

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

Dernæst tilføj nøglen til lagerregistreringsnøglen, opdater dit systempakkeindeks 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

Opret en fil med navnet /etc/yum.repos.d/nginx.repo, og indsæt en af nedenstående konfigurationer.

[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

Bemærk: På grund af forskelle mellem hvordan CentOS og RHEL er det nødvendigt at erstatte $ releasever med enten 6 (til 6.x) eller 7 (til 7.x), afhængigt af din OS-version.

Derefter skal du tilføje repository-signaturnøglen og installere nginx-pakken som vist.

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

Efter succesfuld installation af Nginx skal du starte den, aktivere den til automatisk start ved systemstart og kontrollere, om den er i gang.

---------- 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 kører en system Firewall, skal du åbne port 80 (HTTP), 443 (HTTPS) og 5000 (Node-app), som webserveren lytter til til klientforbindelsesanmodninger.

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

Trin 4: Konfigurer Nginx som omvendt proxy til Nodejs-applikation

Opret nu en serverblokkonfigurationsfil til din Node-app under /etc/nginx/conf.d/ som vist.

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

Kopier og indsæt følgende konfiguration (skift 192.168.43.31 med din server IP og tecmint.lan med dit domænenavn).

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

Gem ændringerne, og afslut filen.

Til sidst skal du genstarte Nginx-tjenesten for at foretage de seneste ændringer.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Trin 5: Få adgang til Nodejs-applikationen via webbrowser

Nu skal du være i stand til at få adgang til din Node-app uden at give den port, den lytter til, i URL'en: dette er en meget bekvem måde for brugerne at få adgang til den.

http://sysmon.tecmint.lan 

For at dit testdomænenavn skal fungere, skal du konfigurere lokal DNS ved hjælp af filen/etc/hosts, åbne den og tilføje nedenstående linje i den (husk at ændre 192.168.43.31 med din server IP og tecmint.lan med dit doamin navn som før).

192.168.43.31 sysmon.tecmint.lan

Det er alt! I denne artikel viste vi, hvordan du konfigurerer Nginx som en omvendt proxy til Nodejs-applikationer. Brug feedbackformularen nedenfor til at stille spørgsmål eller dele dine tanker om denne artikel.