Cum să configurați Nginx ca proxy invers pentru aplicația Nodejs
Nodejs este un cadru JavaScript cu sursă deschisă gratuit, ușor, scalabil și eficient, construit pe motorul JavaScript V8 al Chrome și utilizează un model I/O care nu blochează, bazat pe evenimente. Nodejs este acum peste tot și a devenit atât de popular pentru dezvoltarea de software de la site-uri web, aplicații web la aplicații de rețea și multe altele.
Nginx este un server HTTP de înaltă performanță, cu sursă deschisă, echilibrator de încărcare și software de proxy invers. Are un limbaj de configurare simplu, ceea ce face ușor de configurat. În acest articol, vom arăta cum să configurați Nginx ca proxy invers pentru aplicațiile Nodejs.
Notă: dacă sistemul dvs. rulează deja cu Nodejs și NPM, iar aplicația rulează pe o un anumit port, mergeți direct la Pasul 4.
Pasul 1: Instalarea Nodejs și NPM în Linux
Cea mai recentă versiune a Node.js și NPM este disponibilă pentru a fi instalată din depozitul oficial de distribuții binare NodeSource Enterprise Linux, Fedora, Debian și Ubuntu, care este întreținut de site-ul web Nodejs și va trebui să îl adăugați la sistemul dumneavoastră pentru a putea instala cele mai recente pachete Nodejs și NPM, așa cum se arată.
Pe 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
Pe CentOS/RHEL și 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 -
Pasul 2: Crearea unei aplicații Nodejs
În scop demonstrativ, vom crea o aplicație exemplu numită „sysmon”, care va rula pe portul 5000, așa cum se arată.
$ sudo mkdir -p /var/www/html/sysmon $ sudo vim /var/www/html/sysmon/server.js
Copiați și inserați următorul cod în fișierul server.js (înlocuiți 192.168.43.31 cu IP-ul serverului dvs.).
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}/`); });
Salvați fișierul și ieșiți.
Acum porniți aplicația nod folosind următoarea comandă (apăsați Ctrl+x
pentru a o termina).
$ 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
Acum deschideți un browser și accesați aplicația dvs. la adresa URL http://198.168.43.31:5000
.
Pasul 3: Instalați Nginx Reverse Proxy în Linux
Vom instala cea mai recentă versiune a Nginx din depozitul oficial, așa cum se arată mai jos.
Pe Debian/Ubuntu
Creați un fișier numit /etc/apt/sources.list.d/nginx.list și adăugați-i următoarele rânduri.
deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx
Apoi, adăugați cheia de semnare a depozitului, actualizați indexul pachetului de sistem și instalați pachetul nginx după cum urmează.
$ wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key $ sudo apt update $ sudo apt install nginx
Pe CentOS/RHEL și Fedora
Creați un fișier denumit /etc/yum.repos.d/nginx.repo și inserați una dintre configurațiile de mai jos.
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
Notă: din cauza diferențelor dintre modul CentOS și RHEL, este necesar să înlocuiți $releasever
cu fie 6 (pentru 6.x) sau 7 (pentru 7.x), în funcție de versiunea sistemului de operare.
Apoi, adăugați cheia de semnare a depozitului și instalați pachetul nginx așa cum se arată.
# wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key # yum install nginx
După instalarea cu succes a Nginx, porniți-l, activați-l să pornească automat la pornirea sistemului și verificați dacă este în funcțiune.
---------- 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
Dacă rulați un firewall de sistem, trebuie să deschideți portul 80 (HTTP), 443 (HTTPS) și 5000 (aplicația Node), pe care serverul web îl ascultă pentru solicitările de conectare la client.
---------- 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
Pasul 4: Configurați Nginx ca proxy invers pentru aplicația Nodejs
Acum creați un fișier de configurare a blocului serverului pentru aplicația dvs. Node sub /etc/nginx/conf.d/, după cum se arată.
$ sudo vim /etc/nginx/conf.d/sysmon.conf
Copiați și inserați următoarea configurație (schimbați 192.168.43.31 cu IP-ul serverului și tecmint.lan cu numele domeniului).
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; } }
Salvați modificările și părăsiți fișierul.
În cele din urmă, reporniți serviciul Nginx pentru a efectua modificările recente.
$ sudo systemctl restart nginx OR # systemctl restart nginx
Pasul 5: Accesați aplicația Nodejs prin intermediul browserului web
Acum ar trebui să puteți accesa aplicația Node fără a furniza portul pe care îl ascultă, în adresa URL: aceasta este o modalitate foarte convenabilă pentru utilizatori de a o accesa.
http://sysmon.tecmint.lan
Pentru ca numele domeniului de testare să funcționeze, trebuie să configurați DNS local folosind fișierul /etc/hosts, să îl deschideți și să adăugați linia de mai jos în el (nu uitați să schimbați 192.168.43.31). cu IP-ul serverului și tecmint.lan cu numele de domeniu ca înainte).
192.168.43.31 sysmon.tecmint.lan
Asta e tot! În acest articol, am arătat cum să configurați Nginx ca proxy invers pentru aplicațiile Nodejs. Folosiți formularul de feedback de mai jos pentru a pune întrebări sau pentru a vă împărtăși părerile despre acest articol.