Zoeken op website

Hoe Nginx te configureren als Reverse Proxy voor de Nodejs-app


Nodejs is een gratis open source, lichtgewicht, schaalbaar en efficiënt JavaScript-framework gebouwd op de V8 JavaScript-engine van Chrome, en maakt gebruik van een gebeurtenisgestuurd, niet-blokkerend I/O-model. Nodejs is nu overal en is zo populair geworden voor het ontwikkelen van software van websites, webapps tot netwerkapps en meer.

Nginx is een open source, krachtige HTTP-server, load balancer en reverse proxy-software. Het heeft een eenvoudige configuratietaal waardoor het eenvoudig te configureren is. In dit artikel laten we zien hoe u Nginx configureert als een reverse proxy voor Nodejs-applicaties.

Lees ook: de ultieme gids voor het beveiligen, versterken en verbeteren van de prestaties van de Nginx-webserver

Opmerking: als uw systeem al draait met Nodejs en NPM en uw app op een bepaalde poort draait , ga direct naar Stap 4.

Stap 1: Nodejs en NPM installeren onder Linux

De nieuwste versie van Node.js en NPM kan worden geïnstalleerd vanuit de officiële opslagplaats voor binaire distributies van NodeSource Enterprise Linux, Fedora, Debian en Ubuntu, die wordt onderhouden door de Nodejs-website en u moet het aan uw systeem toevoegen om de nieuwste Nodejs- en NPM-pakketten te kunnen installeren, zoals weergegeven.

Op 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

Op CentOS/RHEL en 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 -

Stap 2: Een Nodejs-applicatie maken

Voor demonstratiedoeleinden gaan we een voorbeeldtoepassing maken met de naam “sysmon”, die zal draaien op poort 5000, zoals weergegeven.

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

Kopieer en plak de volgende code in het bestand server.js (vervang 192.168.43.31 door uw 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}/`);
});

Sla het bestand op en sluit af.

Start nu uw knooppunttoepassing met behulp van de volgende opdracht (druk op Ctrl+x om deze te beëindigen).

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

Open nu een browser en open uw applicatie via de URL http://198.168.43.31:5000.

Stap 3: Installeer Nginx Reverse Proxy in Linux

We zullen de nieuwste versie van Nginx installeren vanuit de officiële repository, zoals hieronder weergegeven.

Op Debian/Ubuntu

Maak een bestand met de naam /etc/apt/sources.list.d/nginx.list en voeg de volgende regels eraan toe.

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

Voeg vervolgens de ondertekeningssleutel van de repository toe, werk de index van uw systeempakket bij en installeer het nginx-pakket als volgt.

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

Op CentOS/RHEL en Fedora

Maak een bestand met de naam /etc/yum.repos.d/nginx.repo en plak een van de onderstaande configuraties.

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

Opmerking: vanwege verschillen tussen CentOS en RHEL, is het noodzakelijk om $releasever te vervangen door 6 (voor 6.x) of 7 (voor 7.x), afhankelijk van uw besturingssysteemversie.

Voeg vervolgens de ondertekeningssleutel van de repository toe en installeer het nginx-pakket zoals weergegeven.

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

Nadat je Nginx succesvol hebt geïnstalleerd, start je het programma, schakel je het in om automatisch op te starten bij het opstarten van het systeem en controleer je of het actief is.

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

Als u een systeemfirewall gebruikt, moet u poort 80 (HTTP), 443 (HTTPS) en 5000 (Node-app) openen, waarop de webserver luistert naar clientverbindingsverzoeken.

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

Stap 4: Configureer Nginx als reverse proxy voor de Nodejs-applicatie

Maak nu een serverblokconfiguratiebestand voor uw Node-app onder /etc/nginx/conf.d/, zoals weergegeven.

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

Kopieer en plak de volgende configuratie (wijzig 192.168.43.31 met uw server-IP en tecmint.lan met uw domeinnaam).

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

Sla de wijzigingen op en sluit het bestand af.

Start ten slotte de Nginx-service opnieuw op om de recente wijzigingen door te voeren.

sudo systemctl restart nginx
OR
systemctl restart nginx

Stap 5: Open de Nodejs-applicatie via een webbrowser

Nu zou u toegang moeten hebben tot uw Node-app zonder de poort waarop deze luistert, in de URL op te geven: dit is een veel handige manier voor gebruikers om er toegang toe te krijgen.

http://sysmon.tecmint.lan 

Om uw testdomeinnaam te laten werken, moet u de lokale DNS instellen met behulp van het bestand /etc/hosts, dit openen en de onderstaande regel eraan toevoegen (vergeet niet om 192.168.43.31 te wijzigen). met uw server-IP en tecmint.lan met uw domeinnaam zoals voorheen).

192.168.43.31 sysmon.tecmint.lan

Dat is alles! In dit artikel hebben we laten zien hoe je Nginx configureert als een reverse proxy voor Nodejs-applicaties. Gebruik het onderstaande feedbackformulier om vragen te stellen of uw mening over dit artikel te delen.