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.