GNU/Linux >> Znalost Linux >  >> Linux

NGINX jako reverzní proxy pro aplikaci Node nebo Angular

Reverzní proxy je server, který získává prostředky pro klienty z jednoho nebo více upstream serverů. Obvykle se umístí za firewall v privátní síti a předává požadavky klientů na tyto upstream servery. Reverzní proxy výrazně zlepšuje zabezpečení, výkon a spolehlivost jakékoli webové aplikace.

Mnoho moderních webových aplikací napsaných v NodeJS nebo Angular může běžet s vlastním samostatným serverem, ale postrádají řadu pokročilých funkcí, jako je vyvažování zátěže , zabezpečení a zrychlení které většina těchto aplikací vyžaduje. NGINX se svými pokročilými funkcemi může fungovat jako reverzní proxy při zpracování požadavku pro NodeJS nebo Angular aplikaci.

Reverzní proxy server NGINX

V tomto tutoriálu prozkoumáme, jak lze NGINX použít jako reverzní proxy server pro aplikaci Node nebo Angular. Níže uvedený diagram vám poskytuje přehled o tom, jak funguje reverzní proxy server a jak zpracovává požadavky klientů a odesílá odpověď.

Nginx Reverse Proxy

Předpoklad

  • Už jste si nainstalovali NGINX podle našeho výukového programu odtud.

Předpoklad

  • Na server NGINX lze přistupovat z veřejné domény.
  • Aplikace Node nebo Angular bude spuštěna v samostatném systému (upstream server) v privátní síti a bude dostupná ze serveru NGINX. I když je velmi možné provést nastavení v jediném systému.
  • Výukový program využívá proměnné jako SUBDOMAIN.DOMAIN.TLD a PRIVATE_IP . Nahraďte je svými vlastními hodnotami na vhodných místech.

Aplikace NodeJS

Za předpokladu, že jste již ve svém prostředí nainstalovali NGINX, dovolte nám vytvořit ukázkovou aplikaci NodeJS, ke které bude přistupovat přes reverzní proxy NGINX. Začněte tím, že nastavíte prostředí uzlu v systému umístěném ve vaší privátní síti.

Instalovat uzel

Než budete pokračovat v instalaci NodeJS a nejnovější verze npm (správce balíčků uzlů), zkontrolujte, zda je již nainstalován nebo ne:


# node --version 
# npm --version

Pokud výše uvedené příkazy vrátí verzi NodeJS a NPM, přeskočte následující instalační krok a pokračujte vytvořením ukázkové aplikace NodeJS.

Chcete-li nainstalovat NodeJS a NPM, použijte následující příkazy:


# apt-get install nodejs npm

Po instalaci znovu zkontrolujte verzi NodeJS a NPM.


# node --version
# npm --version

Vytvořit ukázkovou aplikaci uzlu

Jakmile bude prostředí NodeJS připraveno, vytvořte ukázkovou aplikaci pomocí ExpressJS. Proto vytvořte složku pro aplikaci uzlu a nainstalujte ExpressJS.


# mkdir node_app  
# cd node_app
# npm install express

Nyní pomocí svého oblíbeného textového editoru vytvořte app.js a přidejte do něj následující obsah.


# vi app.js
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World !'))
app.listen(3000, () => console.log('Node.js app listening on port 3000.'))

Spusťte aplikaci uzlu pomocí následujícího příkazu:


# node app.js

Proveďte zvlněný dotaz na port číslo 3000, abyste potvrdili, že aplikace běží na localhost.


# curl localhost:3000
Hello World !

V tomto okamžiku bude aplikace NodeJS spuštěna na upstream serveru. V posledním kroku nakonfigurujeme NGINX tak, aby fungoval jako reverzní proxy pro výše uvedenou aplikaci uzlu. Prozatím pokračujme ve vytváření úhlové aplikace, jejíž kroky jsou uvedeny níže:

Úhlová aplikace

Angular je další JavaScriptový framework pro vývoj webových aplikací pomocí strojopisu. Obecně platí, že aplikace Angular je přístupná prostřednictvím samostatného serveru, který je dodáván spolu s ní. Ale kvůli několika nevýhodám používání tohoto samostatného serveru v produkčním prostředí je reverzní proxy umístěna před úhlovou aplikaci, aby ji lépe obsluhovala.

Nastavení úhlového prostředí

Vzhledem k tomu, že Angular je JavaScript framework, vyžaduje mít v systému nainstalovaný Nodejs s verzí> 8.9. Proto před instalací úhlového CLI rychle nastavte prostředí uzlu vydáním následujícího příkazu v terminálu.


# curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
# apt-get install nodejs npm

Nyní pokračujte v instalaci Angular CLI, které nám pomáhá vytvářet projekty, generovat kód aplikace a knihovny pro jakoukoli aplikaci Angular.


# npm install -g @angular/cli

Nastavení potřebné pro prostředí Angular je nyní dokončeno. V dalším kroku vytvoříme úhlovou aplikaci.

Vytvořit úhlovou aplikaci

Vytvořte aplikaci Angular pomocí následujícího příkazu Angular CLI:


# ng new angular-app

Přejděte do nově vytvořeného adresáře Angular a spusťte webovou aplikaci zadáním názvu hostitele a čísla portu:


# cd angular-app
# ng serve --host PRIVATE_IP --port 3000

Proveďte curl dotaz na port číslo 3000, abyste potvrdili, že aplikace Angular běží na localhost.


# curl PRIVATE_IP:3000

V tomto okamžiku bude aplikace Angular spuštěna na vašem upstream serveru. V dalším kroku nakonfigurujeme NGINX tak, aby fungoval jako reverzní proxy pro výše uvedenou úhlovou aplikaci.

Nakonfigurujte NGINX jako reverzní proxy

Přejděte do konfiguračního adresáře virtuálního hostitele NGINX a vytvořte blok serveru, který bude fungovat jako reverzní proxy. Pamatujte, že systém, kde jste dříve nainstalovali NGINX, je dostupný přes internet, tj. k systému je připojena veřejná IP.


# cd /etc/nginx/sites-available
# vi node_or_angular_app.conf

server {  
              listen 80;
              server_name SUBDOMAIN.DOMAIN.TLD;
              location / {  
                           proxy_pass https://PRIVATE_IP:3000;  
                           proxy_http_version 1.1;  
                           proxy_set_header Upgrade $http_upgrade;  
                           proxy_set_header Connection 'upgrade';  
                           proxy_set_header Host $host;  
                           proxy_cache_bypass $http_upgrade;  
               }  
}

Direktiva proxy_pass ve výše uvedené konfiguraci způsobí, že server zablokuje reverzní proxy. Veškerý provoz směřující do domény SUBDOMAIN.DOMAIN.TLD a tyto shody s kořenovým blokem umístění (/) budou předány na https://PRIVATE_IP:3000 kde běží uzel nebo úhlová aplikace.

NGINX Reverse Proxy pro NodeJS i Angular App?

Výše uvedený blok serveru bude fungovat jako reverzní proxy pro uzel nebo úhlovou aplikaci. Chcete-li současně obsluhovat uzel i úhlovou aplikaci pomocí reverzního proxy NGINX, stačí je spustit na dvou různých číslech portu, pokud jste zamýšleli pro oba používat stejný systém.

Je také velmi dobře možné použít dva samostatné upstream servery pro běh node a ngular aplikace. Dále musíte také vytvořit další blok serveru NGINX s odpovídajícími hodnotami pro server_name a proxy_pass směrnice.

Doporučená četba :Vysvětlení konfiguračního souboru NGINX.

Zkontrolujte, zda ve výše uvedeném bloku serveru nejsou nějaké syntaktické chyby, a povolte je. Nakonec znovu načtěte NGINX a použijte nová nastavení.


# nginx -t
# cd /etc/nginx/sites-enabled
# ln -s ../sites-available/node_or_angular_app.conf .
# systemctl reload nginx

Nyní nasměrujte svůj oblíbený webový prohlížeč na https://SUBDOMAIN.DOMAIN.TLD , budete uvítáni uvítací zprávou z aplikace Node nebo Angular.

Úhlová uvítací stránka

Shrnutí

To je vše pro konfiguraci reverzního proxy NGINX pro aplikace NodeJS nebo Angular. Nyní můžete pokračovat přidáním bezplatného certifikátu SSL, jako je Let’s Encrypt, abyste zabezpečili svou aplikaci!


Linux
  1. Reverzní proxy s Nginx:Průvodce nastavením krok za krokem

  2. Nakonfigurujte Apache pro WebSockets pomocí Reverse Proxy

  3. Nastavte WSO2 s NGINX Reverse Proxy pro vlastní adresy URL

  1. Jak nastavit reverzní proxy Nginx

  2. Průvodce spuštěním reverzního proxy pro HTTP(S), SSH a MySQL/MariaDB pomocí NGINX

  3. Reverzní proxy Nginx bez ukončení SSL

  1. Jak nakonfigurovat Nginx Reverse Proxy pro Kibana

  2. Jak nainstalovat Nginx jako Reverse Proxy pro Apache na Ubuntu 15.10

  3. Jak nainstalovat WildFly Java Application Server s Nginx Reverse Proxy na Ubuntu 20.04