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.