Kako konfigurirati Nginx kao obrnuti proxy za aplikaciju Nodejs
Nodejs je besplatan open source, lagan, skalabilan i efikasan JavaScript okvir izgrađen na Chrome-ovom V8 JavaScript motoru i koristi I/O model koji se ne blokira, vođen događajima. 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 open source HTTP server visokih performansi, balansiranje opterećenja i softver za reverzni proxy. Ima jednostavan konfiguracijski jezik koji ga čini lakim za konfiguraciju. U ovom članku ćemo pokazati kako konfigurirati Nginx kao obrnuti proxy za Nodejs aplikacije.
Pročitajte također: Ultimativni vodič za sigurnu, ojačanu i poboljšanje performansi Nginx web servera
Napomena: Ako vaš sistem već radi sa Nodejs i NPM, i ako vaša aplikacija radi na određenom portu , idite direktno na 4. korak.
Korak 1: Instaliranje Nodejs i NPM u Linux
Najnovija verzija Node.js i NPM dostupna je za instalaciju sa službenog spremišta binarnih distribucija NodeSource Enterprise Linux, Fedora, Debian i Ubuntu, koje održava web stranica Nodejs i moraćete da ga dodate svom sistemu da biste mogli da instalirate najnovije Nodejs i NPM pakete kao što je prikazano.
Na 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
Na CentOS/RHEL-u i Fedori
---------- 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: Kreiranje Nodejs aplikacije
U svrhu demonstracije, kreirat ćemo primjer aplikacije pod nazivom “sysmon”, koja će raditi na portu 5000 kao što 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 sa IP serverom).
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}/`);
});
Sačuvajte fajl i izađite.
Sada pokrenite svoju aplikaciju čvora koristeći sljedeću naredbu (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 pretraživač i pristupite svojoj aplikaciji na URL http://198.168.43.31:5000
.
Korak 3: Instalirajte Nginx Reverse Proxy u Linux
Instalirat ćemo najnoviju verziju Nginxa iz službenog spremišta, kao što je prikazano ispod.
Na Debian/Ubuntu
Kreirajte datoteku pod nazivom /etc/apt/sources.list.d/nginx.list i dodajte joj sljedeće redove.
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 na sljedeći način.
wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
sudo apt update
sudo apt install nginx
Na CentOS/RHEL-u i Fedori
Kreirajte datoteku pod nazivom /etc/yum.repos.d/nginx.repo i zalijepite jednu od konfiguracija ispod.
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
Napomena: Zbog razlika između CentOS-a i RHEL-a, potrebno je zamijeniti $releasever
sa bilo 6 (za 6.x) ili 7 (za 7.x), ovisno o verziji 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 što uspješno instalirate Nginx, pokrenite ga, omogućite mu automatsko pokretanje pri pokretanju sistema i provjerite da li je pokrenut 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 zaštitni zid, morate otvoriti port 80 (HTTP), 443 (HTTPS) i 5000 (Node aplikacija), koje web server sluša za zahtjeve za povezivanje 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 Reverse Proxy za Nodejs aplikaciju
Sada kreirajte konfiguracijsku datoteku bloka servera za vašu Node aplikaciju 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 sa IP serverom i tecmint.lan sa imenom vašeg domena).
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;
}
}
Sačuvajte promjene i izađite iz datoteke.
Konačno, ponovo pokrenite Nginx servis da biste izvršili nedavne promjene.
sudo systemctl restart nginx
OR
systemctl restart nginx
Korak 5: Pristupite aplikaciji Nodejs putem web pretraživača
Sada biste trebali moći pristupiti vašoj Node aplikaciji bez navođenja porta na kojem sluša, u URL-u: ovo je vrlo zgodan način za korisnike da joj pristupe.
http://sysmon.tecmint.lan
Da bi ime vašeg testnog domena funkcionisalo, morate postaviti lokalni DNS koristeći datoteku /etc/hosts, otvoriti je i dodati red ispod (ne zaboravite promijeniti 192.168.43.31 sa IP-om vašeg servera i tecmint.lan sa vašim imenom domene kao i prije).
192.168.43.31 sysmon.tecmint.lan
To je sve! U ovom članku smo pokazali kako konfigurirati Nginx kao obrnuti proxy za Nodejs aplikacije. Koristite obrazac za povratne informacije u nastavku da postavite bilo kakva pitanja ili podijelite svoje mišljenje o ovom članku.