Ricerca nel sito web

Come ospitare app Web utilizzando il proxy inverso Nginx su Ubuntu


Avendo oltre 10 anni di esperienza di lavoro con i sistemi Linux, posso dire che impostare un proxy inverso con Nginx è uno dei modi più comuni ed efficienti per gestire il traffico verso le tue applicazioni web.

Un proxy inverso funge da server intermedio che inoltra le richieste dei client al server backend appropriato ed è uno strumento essenziale per il bilanciamento del carico, la sicurezza e le prestazioni.

In questa guida ti guiderò attraverso i passaggi per configurare Nginx come proxy inverso su Ubuntu 24.04, insieme a un esempio di hosting di una semplice applicazione web dietro Nginx.

Prerequisiti

Prima di iniziare, assicurati di avere quanto segue:

  • Server Ubuntu 24.04 attivo e funzionante (puoi utilizzare un VPS o un server fisico).
  • Privilegi root o sudo per eseguire attività di amministrazione del sistema.
  • Un'applicazione web di esempio in esecuzione su un server backend (per questo esempio utilizzeremo un'app Node.js di base).
  • Conoscenza di base dei comandi Linux e dei concetti di rete.

Passaggio 1: installa Nginx su Ubuntu 24.04

Innanzitutto, dobbiamo installare il server web Nginx dai repository Ubuntu predefiniti utilizzando il seguente comando.

sudo apt update
sudo apt install nginx

Una volta completata l'installazione, puoi controllare lo stato di Nginx per assicurarti che sia in esecuzione:

sudo systemctl status nginx

Se Nginx non è in esecuzione, avvialo con il comando:

sudo systemctl start nginx

Per assicurarti che Nginx si avvii automaticamente all'avvio:

sudo systemctl enable nginx

Se hai un firewall UFW abilitato sul tuo server, assicurati che il traffico HTTP (porta 80) sia consentito.

sudo ufw allow 'Nginx Full'
sudo ufw enable

Passaggio 2: configura l'applicazione Web backend

In questo esempio, utilizzeremo una semplice applicazione Node.js come server backend, che ascolterà sulla porta 3000.

Per prima cosa installa Node.js e npm sul tuo server:

sudo apt install nodejs npm

Ora creiamo una semplice applicazione web Node.js:

sudo mkdir /var/www/myapp
cd /var/www/myapp

Inizializza l'app Node.js:

sudo npm init -y

Installa Express, un semplice framework web per Node.js:

sudo npm install express

Crea un file app.js all'interno della directory /var/www/myapp con il seguente contenuto:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello, this is a backend app!');
});

app.listen(port, () => {
  console.log(`App running on http://localhost:${port}`);
});

Avvia la tua applicazione Node.js.

sudo node app.js

La tua applicazione web di backend è ora in esecuzione su http://localhost:3000 e puoi verificarlo accedendo al seguente indirizzo nel tuo browser e dovresti vedere il messaggio "Ciao, questo è un'app di backend!" messaggio.

http://your-server-ip:3000

Passaggio 3: configura Nginx come proxy inverso

Ora configuriamo Nginx per inoltrare le richieste dal mondo esterno al backend Node.js in esecuzione sulla porta 3000.

Innanzitutto, crea un nuovo file di configurazione nella directory sites-available:

sudo nano /etc/nginx/sites-available/myapp

Nel nuovo file, aggiungi la seguente configurazione per indicare a Nginx di inoltrare le richieste HTTP in entrata al server backend in esecuzione sulla porta 3000:

server {
    listen 80;
    server_name your_domain_or_ip; location / { proxy_pass http://localhost:3000; # Forward requests to your backend server 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; } }

Dopo aver salvato la configurazione, crea un collegamento simbolico alla directory sites-enabled per abilitare questa configurazione:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

È importante assicurarsi che non vi siano errori di sintassi prima di riavviare Nginx:

sudo nginx -t
sudo systemctl restart nginx

Ora apri il browser e accedi all'indirizzo IP pubblico o al dominio del tuo server (ad esempio, http://your-server-ip o http://your_domain).

Dovresti visualizzare il messaggio "Ciao, questa è un'app backend!", il che significa che Nginx sta inoltrando con successo le richieste alla tua applicazione Node.js backend.

Per connessioni sicure, puoi configurare SSL con Let's Encrypt.

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain_or_ip
Conclusione

In questa guida, abbiamo configurato Nginx come proxy inverso per inoltrare le richieste HTTP a un'applicazione web Node.js di backend in esecuzione su localhost:3000 su un server Ubuntu 24.04.

Seguendo questi passaggi, hai imparato i concetti di base del reverse proxying con Nginx e come ospitare una semplice applicazione web dietro Nginx. Con questa configurazione, puoi facilmente espanderla ad applicazioni più complesse e ridimensionare la tua infrastruttura secondo necessità.

Articoli correlati: