GNU/Linux >> Linux Esercitazione >  >> Linux

NGINX come proxy inverso per applicazioni Node o Angular

Un proxy inverso è un server che recupera le risorse per i client da uno o più server a monte. In genere si posiziona dietro un firewall in una rete privata e inoltra le richieste dei client a questi server a monte. Un proxy inverso migliora notevolmente la sicurezza, le prestazioni e l'affidabilità di qualsiasi applicazione web.

Molte applicazioni Web moderne scritte in NodeJS o Angular possono essere eseguite con il proprio server autonomo ma mancano di una serie di funzionalità avanzate come il bilanciamento del carico , sicurezza e accelerazione che la maggior parte di queste applicazioni richiede. NGINX con le sue funzionalità avanzate può fungere da proxy inverso mentre serve la richiesta per un NodeJS o un'applicazione Angular.

Server proxy inverso NGINX

In questo tutorial, esploreremo come NGINX può essere utilizzato come server proxy inverso per un nodo o un'applicazione Angular. Il diagramma seguente fornisce una panoramica di come funziona il server proxy inverso, elabora le richieste dei client e invia la risposta.

Nginx proxy inverso

Prerequisito

  • Hai già installato NGINX seguendo il nostro tutorial da qui.

Assunzione

  • È possibile accedere al server NGINX da pubblico dominio.
  • L'applicazione Node o Angular verrà eseguita in un sistema separato (server a monte) in una rete privata e può essere raggiunta dal server NGINX. Sebbene sia possibile eseguire le impostazioni in un unico sistema.
  • Il tutorial fa uso di variabili come SUBDOMAIN.DOMAIN.TLD e PRIVATE_IP . Sostituiscili con i tuoi valori nei posti appropriati.

Applicazione NodeJS

Supponendo che tu abbia già installato NGINX nel tuo ambiente, creiamo un'applicazione NodeJS di esempio a cui si accederà tramite proxy inverso NGINX. Per cominciare, configura un ambiente nodo in un sistema che risiede nella tua rete privata.

Installa nodo

Prima di procedere con l'installazione di NodeJS e dell'ultima versione di npm(node ​​package manager), controlla se è già installato o meno:


# node --version 
# npm --version

Se i comandi precedenti restituiscono la versione di NodeJS e NPM, salta il seguente passaggio di installazione e procedi con la creazione dell'applicazione NodeJS di esempio.

Per installare NodeJS e NPM, utilizza i seguenti comandi:


# apt-get install nodejs npm

Una volta installato, controlla di nuovo la versione di NodeJS e NPM.


# node --version
# npm --version

Crea un'applicazione Node di esempio

Una volta che l'ambiente NodeJS è pronto, crea un'applicazione di esempio utilizzando ExpressJS. Pertanto, crea una cartella per l'applicazione del nodo e installa ExpressJS.


# mkdir node_app  
# cd node_app
# npm install express

Ora usando il tuo editor di testo preferito, crea app.js e aggiungi il seguente contenuto al suo interno.


# 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.'))

Esegui l'applicazione del nodo usando il seguente comando:


# node app.js

Eseguire una query curl sulla porta numero 3000 per confermare che l'applicazione è in esecuzione su localhost.


# curl localhost:3000
Hello World !

A questo punto, l'applicazione NodeJS sarà in esecuzione nel server upstream. Nell'ultimo passaggio, configureremo NGINX per fungere da proxy inverso per l'applicazione del nodo precedente. Per il momento, procediamo con la creazione di un'applicazione angolare, i cui passaggi sono riportati di seguito:

Applicazione angolare

Angular è un altro framework JavaScript per lo sviluppo di applicazioni Web utilizzando dattiloscritto. In generale, si accede a un'applicazione angolare tramite il server autonomo fornito insieme ad essa. Ma a causa di alcuni svantaggi dell'utilizzo di questo server autonomo in un ambiente di produzione, un proxy inverso viene posizionato davanti a un'applicazione angolare per servirla meglio.

Imposta ambiente angolare

Poiché Angular è un framework JavaScript, richiede che Nodejs con versione> 8.9 sia installato nel sistema. Pertanto, prima di procedere con l'installazione della CLI angolare, configurare rapidamente l'ambiente del nodo emettendo il seguente comando nel terminale.


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

Ora procedi con l'installazione di Angular CLI che ci aiuta a creare progetti, generare applicazione e codice libreria per qualsiasi applicazione angolare.


# npm install -g @angular/cli

La configurazione necessaria per l'ambiente Angular è ora completa. Nel passaggio successivo creeremo un'applicazione angolare.

Crea applicazione angolare

Crea un'applicazione angolare utilizzando il seguente comando CLI angolare:


# ng new angular-app

Passare alla directory angolare appena creata ed eseguire l'applicazione Web specificando il nome host e il numero di porta:


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

Effettua una query curl sulla porta numero 3000 per confermare che l'applicazione angolare è in esecuzione su localhost.


# curl PRIVATE_IP:3000

A questo punto, l'applicazione angolare verrà eseguita nel server upstream. Nel passaggio successivo, configureremo NGINX in modo che funga da proxy inverso per l'applicazione angolare di cui sopra.

Configura NGINX come proxy inverso

Passare alla directory di configurazione dell'host virtuale NGINX e creare un blocco server che fungerà da proxy inverso. Ricorda che il sistema su cui hai installato NGINX in precedenza può essere raggiunto tramite Internet, ovvero un IP pubblico è collegato al sistema.


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

La direttiva proxy_pass nella configurazione precedente rende il blocco del server un proxy inverso. Tutto il traffico destinato al dominio SUBDOMAIN.DOMAIN.TLD e quelle corrispondenze con il blocco della posizione radice (/) verranno inoltrate a https://PRIVATE_IP:3000 dove è in esecuzione il nodo o l'applicazione angolare.

NGINX Reverse Proxy sia per NodeJS che per l'app Angular?

Il blocco del server sopra fungerà da proxy inverso per il nodo o l'applicazione angolare. Per servire contemporaneamente sia il nodo che l'applicazione angolare utilizzando il proxy inverso NGINX, eseguili su due numeri di porta diversi se intendi utilizzare lo stesso sistema per entrambi.

È anche molto possibile utilizzare due server upstream separati per eseguire il nodo e l'applicazione angolare. Inoltre, devi anche creare un altro blocco server NGINX con valori corrispondenti per server_name e proxy_pass direttiva.

Lettura consigliata :Comprensione del file di configurazione NGINX.

Verifica la presenza di eventuali errori sintattici nel blocco del server sopra e abilita lo stesso. Infine, ricarica NGINX per applicare nuove impostazioni.


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

Ora punta il tuo browser web preferito su https://SUBDOMAIN.DOMAIN.TLD , verrai accolto con un messaggio di benvenuto dall'applicazione Node o Angular.

Pagina di benvenuto angolare

Riepilogo

Questo è tutto per la configurazione di un proxy inverso NGINX per l'applicazione NodeJS o Angular. Ora puoi procedere con l'aggiunta di un certificato SSL gratuito come Let's Encrypt per proteggere la tua applicazione!


Linux
  1. Come configurare un proxy inverso Nginx

  2. Una guida all'esecuzione di un proxy inverso per HTTP(S), SSH e MySQL/MariaDB utilizzando NGINX

  3. Proxy inverso con Nginx:una guida all'installazione passo passo

  4. Configura Apache per WebSocket usando il proxy inverso

  5. Imposta WSO2 con NGINX Reverse Proxy per URL personalizzati

Come configurare Nginx come proxy inverso per Apache su Debian 11

Come impostare il proxy inverso Nginx

Come configurare Nginx come proxy inverso per Apache su Ubuntu 18.04 VPS

Come configurare Tomcat con Nginx come proxy inverso su Ubuntu 18.04

Come configurare Apache come server proxy frontend per Node.js CentOS 8

Come installare NGINX come proxy inverso per Apache su Ubuntu 18.04