Kako konfigurirati Nginx kao obrnuti proxy za aplikaciju Nodejs
Nodejs je besplatni otvoreni izvor, lagan, skalabilan i učinkovit JavaScript okvir izgrađen na Chromeovom V8 JavaScript mehanizmu i koristi I/O model koji upravlja blokiranjem događaja. Nodejs je sada posvuda i postao je toliko popularan za razvoj softvera od web stranica, web aplikacija do mrežnih aplikacija i još mnogo toga.
Nginx je otvoreni izvor, HTTP poslužitelj visokih performansi, uravnoteživač opterećenja i obrnuti proxy softver. Ima izravni konfiguracijski jezik što ga čini jednostavnim za konfiguriranje. U ovom ćemo članku pokazati kako konfigurirati Nginx kao obrnuti proxy za Nodejs aplikacije.
Napomena: Ako se vaš sustav već izvodi s Nodejsom i NPM-om, a vaša aplikacija radi na određenom portu, prijeđite izravno na 4. korak.
Korak 1: Instaliranje Nodejs-a i NPM-a u Linux
Najnovija verzija Node.js i NPM dostupna je za instalaciju iz službenog spremišta binarnih distribucija NodeSource Enterprise Linux, Fedora, Debian i Ubuntu, koje održava web mjesto Nodejs, a morat ćete ga dodati u svoj sustav da biste mogli instalirajte najnovije Nodejs i NPM pakete kao što je prikazano.
---------- 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 -
Korak 2: Stvaranje Nodejs aplikacije
U svrhu demonstracije stvorit ćemo uzorak aplikacije nazvane "sysmon", koja će se izvoditi na portu 5000, kako je prikazano.
$ sudo mkdir -p /var/www/html/sysmon $ sudo vim /var/www/html/sysmon/server.js
Kopirajte i zalijepite sljedeći kod u datoteku server.js (zamijenite 192.168.43.31 IP-om poslužitelja).
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}/`); });
Spremite datoteku i izađite.
Sada pokrenite aplikaciju čvora pomoću sljedeće naredbe (pritisnite Ctrl + x
da biste je prekinuli).
$ 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
Sada otvorite preglednik i pristupite svojoj aplikaciji na URL-u http://198.168.43.31:5000
.
Korak 3: Instalirajte Nginx obrnuti proxy u Linux
Instalirat ćemo najnoviju verziju Nginxa iz službenog spremišta, kao što je prikazano u nastavku.
Stvorite datoteku pod nazivom /etc/apt/sources.list.d/nginx.list i dodajte joj sljedeće retke.
deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx
Zatim dodajte ključ za potpisivanje spremišta, ažurirajte indeks sistemskog paketa i instalirajte nginx paket kako slijedi.
$ wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key $ sudo apt update $ sudo apt install nginx
Stvorite datoteku s imenom /etc/yum.repos.d/nginx.repo i zalijepite jednu od dolje navedenih konfiguracija.
[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
Napomena: Zbog razlika između načina na koji CentOS i RHEL, potrebno je $releasever
zamijeniti s 6 (za 6.x) ili 7 (za 7.x), ovisno o verziji vašeg OS-a.
Zatim dodajte ključ za potpisivanje spremišta i instalirajte nginx paket kao što je prikazano.
# wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key # yum install nginx
Nakon uspješne instalacije Nginxa, pokrenite ga, omogućite mu automatsko pokretanje prilikom pokretanja sustava i provjerite radi li i radi.
---------- 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
Ako koristite sistemski vatrozid, morate otvoriti priključke 80 (HTTP), 443 (HTTPS) i 5000 (aplikacija Čvor), koje web poslužitelj osluškuje za zahtjeve za povezivanjem klijenta.
---------- 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
Korak 4: Konfigurirajte Nginx kao obrnuti proxy za Nodejs aplikaciju
Sada stvorite datoteku za konfiguraciju bloka poslužitelja za svoju aplikaciju Node pod /etc/nginx/conf.d/, kao što je prikazano.
$ sudo vim /etc/nginx/conf.d/sysmon.conf
Kopirajte i zalijepite sljedeću konfiguraciju (promijenite 192.168.43.31 s IP-om poslužitelja i tecmint.lan s imenom domene).
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; } }
Spremite promjene i zatvorite datoteku.
Konačno, ponovno pokrenite uslugu Nginx da biste izvršili nedavne promjene.
$ sudo systemctl restart nginx OR # systemctl restart nginx
Korak 5: Pristupite aplikaciji Nodejs putem web preglednika
Sada biste trebali moći pristupiti svojoj aplikaciji Node bez navođenja priključka na kojem sluša, u URL-u: ovo je mnogo prikladan način za pristup korisnicima.
http://sysmon.tecmint.lan
Da bi vaše testno ime domene moglo funkcionirati, morate postaviti lokalni DNS pomoću datoteke/etc/hosts, otvoriti ga i dodati redak ispod u njega (ne zaboravite promijeniti 192.168.43.31 s IP poslužitelja i tecmint.lan sa svojim imenom doamin kao prije).
192.168.43.31 sysmon.tecmint.lan
To je sve! U ovom smo članku pokazali kako konfigurirati Nginx kao obrnuti proxy za Nodejs aplikacije. Koristite obrazac za povratne informacije u nastavku da biste postavili bilo kakva pitanja ili podijelili svoje mišljenje o ovom članku.