Vyhledávání na webu

Jak nakonfigurovat Nginx jako reverzní proxy pro aplikaci Nodejs


Nodejs je bezplatný open source, odlehčený, škálovatelný a efektivní rámec JavaScriptu, který je postaven na JavaScriptovém enginu Chrome V8 a využívá událostmi řízený neblokující I/O model. Nodejs je nyní všude a stal se tak populárním pro vývoj softwaru od webových stránek, webových aplikací po síťové aplikace a další.

Nginx je open source, vysoce výkonný HTTP server, nástroj pro vyrovnávání zatížení a reverzní proxy. Má přímočarý konfigurační jazyk, který usnadňuje konfiguraci. V tomto článku si ukážeme, jak nakonfigurovat Nginx jako reverzní proxy pro aplikace Nodejs.

Přečtěte si také: Nejlepší průvodce zabezpečením, zpevněním a zlepšením výkonu webového serveru Nginx

Poznámka: Pokud váš systém již běží s Nodejs a NPM a vaše aplikace běží na určitém portu , přejděte přímo ke kroku 4.

Krok 1: Instalace Nodejs a NPM v Linuxu

Nejnovější verze Node.js a NPM je k dispozici k instalaci z oficiálního úložiště binárních distribucí NodeSource Enterprise Linux, Fedora, Debian a Ubuntu, které spravuje web Nodejs a budete jej muset přidat do svého systému, abyste mohli nainstalovat nejnovější balíčky Nodejs a NPM, jak je znázorněno.

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 a Fedoře

---------- 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 -

Krok 2: Vytvoření aplikace Nodejs

Pro demonstrační účely vytvoříme ukázkovou aplikaci nazvanou „sysmon“, která poběží na portu 5000, jak je znázorněno.

sudo mkdir -p /var/www/html/sysmon
sudo vim /var/www/html/sysmon/server.js

Zkopírujte a vložte následující kód do souboru server.js (192.168.43.31 nahraďte IP adresou vašeho serveru).

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}/`);
});

Uložte soubor a ukončete.

Nyní spusťte aplikaci uzlu pomocí následujícího příkazu (stiskněte Ctrl+x pro její ukončení).

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

Nyní otevřete prohlížeč a otevřete svou aplikaci na adrese URL http://198.168.43.31:5000.

Krok 3: Nainstalujte Nginx Reverse Proxy v Linuxu

Nainstalujeme nejnovější verzi Nginx z oficiálního úložiště, jak je uvedeno níže.

Na Debian/Ubuntu

Vytvořte soubor s názvem /etc/apt/sources.list.d/nginx.list a přidejte do něj následující řádky.

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

Dále přidejte podpisový klíč úložiště, aktualizujte index systémových balíčků a nainstalujte balíček nginx následovně.

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 a Fedoře

Vytvořte soubor s názvem /etc/yum.repos.d/nginx.repo a vložte jednu z níže uvedených konfigurací.

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

Poznámka: Kvůli rozdílům mezi CentOS a RHEL je nutné nahradit $releasever buď 6 (pro 6.x) nebo 7 (pro 7.x), v závislosti na verzi vašeho operačního systému.

Dále přidejte podpisový klíč úložiště a nainstalujte balíček nginx, jak je znázorněno.

wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
yum install nginx

Po úspěšné instalaci Nginx jej spusťte, povolte jeho automatické spouštění při spouštění systému a zkontrolujte, zda je v provozu.

---------- 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

Pokud používáte systémovou bránu firewall, musíte otevřít port 80 (HTTP), 443 (HTTPS) a 5000 (aplikace Node), na které webový server naslouchá požadavkům klienta na připojení.

---------- 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 

Krok 4: Nakonfigurujte Nginx jako reverzní proxy pro aplikaci Nodejs

Nyní vytvořte konfigurační soubor serverového bloku pro vaši aplikaci Node pod /etc/nginx/conf.d/, jak je znázorněno.

sudo vim /etc/nginx/conf.d/sysmon.conf 

Zkopírujte a vložte následující konfiguraci (změňte 192.168.43.31 s IP serverem a tecmint.lan s názvem vaší domény).

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;
    }
}

Uložte změny a ukončete soubor.

Nakonec restartujte službu Nginx, aby se projevily poslední změny.

sudo systemctl restart nginx
OR
systemctl restart nginx

Krok 5: Přístup k aplikaci Nodejs prostřednictvím webového prohlížeče

Nyní byste měli mít přístup k aplikaci Node, aniž byste v adrese URL uvedli port, na kterém naslouchá: toto je pro uživatele velmi pohodlný způsob, jak k ní přistupovat.

http://sysmon.tecmint.lan 

Aby název vaší testovací domény fungoval, musíte nastavit místní DNS pomocí souboru /etc/hosts, otevřít jej a přidat do něj řádek níže (nezapomeňte změnit 192.168.43.31 s IP serverem a tecmint.lan s názvem vaší domény jako dříve).

192.168.43.31 sysmon.tecmint.lan

To je vše! V tomto článku jsme ukázali, jak nakonfigurovat Nginx jako reverzní proxy pro aplikace Nodejs. Pomocí níže uvedeného formuláře pro zpětnou vazbu můžete položit jakékoli otázky nebo sdílet své názory na tento článek.