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.