Vai al contenuto principale

VPS: Configura un Reverse Proxy con nginx su Linux

Questa guida è stata creata con i seguenti prodotti:

(I dettagli possono variare con prodotti di fornitori diversi ma i concetti principali rimangono gli stessi)

Introduzione

Un reverse proxy è un server che funge da intermediario tra gli utenti finali e un altro server. Siti web e server di gioco sono tra gli usi più comuni per un reverse proxy, ognuno con vantaggi come sicurezza, facilità di accesso e protezione.

In questa guida esploreremo come configurare un reverse proxy generico per siti web e uno specifico per server di gioco.

Preparazione

Per configurare un reverse proxy ti serve un Server Linux che ospiterà il proxy. In questo esempio useremo Ubuntu come distro Linux, ma i passaggi di installazione sono molto simili per la maggior parte delle distribuzioni Linux.

Specifiche VPS Consigliate

Per un reverse proxy dedicato ai server di gioco, consigliamo vivamente di scegliere velocità di rete più elevate, soprattutto se il server ha molti giocatori. Questo perché il VPS farà da stream diretto TCP/UDP tra client (giocatore) e server di gioco. Per un proxy web invece, un server con specifiche base e pochi upgrade è più che sufficiente. :)

Ti consigliamo di configurare il proxy con un Dominio di tua proprietà. Per ogni sottodominio che vuoi usare, crea un record DNS A (es. zapdocs.example.com) puntando all’indirizzo IP del tuo VPS Linux. Sarà così che gli utenti accederanno al tuo sito o server di gioco.

Accesso al VPS

Con il VPS Linux pronto, devi connetterti. Usa la nostra guida Accesso SSH Iniziale per scoprire come fare.

Installazione di Nginx

Useremo Nginx per ospitare il reverse proxy, perché è un web server open-source molto performante e popolare.

Una volta connesso al VPS, installa Nginx con questo comando:

sudo apt install nginx

Dopo l’installazione, devi configurare il firewall per permettere l’accesso al servizio da internet. Per questa guida useremo il Firewall UFW, dato che Nginx si registra come app e rende facile la configurazione. Puoi approfondire il firewall UFW nella nostra guida Consigli di Sicurezza Linux.

note

Se usi altri firewall (tipo Iptables), assicurati di aprire le porte 80 e 443 per Nginx.

Controlla i profili di Nginx con sudo ufw app list. Qui scegliamo l’opzione Nginx Full, che apre HTTP per test e HTTPS per produzione.

sudo ufw allow 'Nginx Full'

Ora prova ad aprire la pagina dal browser per verificare che funzioni. Se vedi la pagina di test, puoi andare avanti.

http://[tuo_indirizzo_ip]

Per Siti Web

Un reverse proxy per siti web è super utile per vari motivi, come reindirizzare a risorse interne (es. un’istanza vaultwarden senza dover mettere la porta nell’URL) o inoltrare utenti a contenuti esterni, utile per bilanciare il carico e aumentare la protezione.

Uno dei vantaggi più grandi è che il tuo server può gestire richieste da più domini/sorgenti, non solo da un singolo server web su porta 80/443.

Configurazione Nginx

Inizia creando un file di configurazione nella cartella di Nginx per il dominio scelto, di solito un sottodominio tipo zapdocs.example.com.

important

Assicurati di aver creato un record A che punti all’IP del proxy prima di continuare. Senza questo, il dominio e i passaggi successivi non funzioneranno.

Accedi alla cartella dei server block con:

cd /etc/nginx/sites-available/

Crea un nuovo file di configurazione. Ti consigliamo di usare come nome il dominio per riconoscerlo facilmente (es. zapdocs.example.com). Sostituisci [your_filename] con il nome che preferisci.

sudo nano [your_filename]

Si aprirà l’editor nano. Copia questo template e incollalo. Sostituisci [your_domain] con il dominio da proxy e [your_target_server] con il server di destinazione.

upstream targetServer {
# Inserisci il server di destinazione, può essere:
# Redirect interno "localhost" (es. 127.0.0.1:9090)
# Server esterno (es. 103.146.43.52:9000)
server [your_target_server];
}

server {
listen 80;
listen [::]:80;

# Dominio da gestire (es. zapdocs.example.com)
server_name [your_domain];

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_pass http://targetServer;
}
}

Dopo aver modificato i valori, salva e chiudi nano con CTRL + X, poi Y per confermare e infine ENTER.

Ora attiva il server block creando un symlink nella cartella attiva:

sudo ln -s /etc/nginx/sites-available/[your_filename] /etc/nginx/sites-enabled/[your_filename]

Controlla la sintassi con:

sudo nginx -t

Se tutto è ok, riavvia Nginx per applicare la configurazione:

systemctl reload nginx.service

Ora prova ad accedere al dominio dal browser. Se funziona, vedrai il contenuto del server che hai impostato come targetServer. Se ci sono problemi, controlla i log con:

journalctl -f -u nginx.service

Per Server di Gioco

Un reverse proxy per server di gioco è utile per aggiungere un livello extra di sicurezza e affidabilità, migliorando la mitigazione e limitando l’accesso al server principale.

suggerimento

La maggior parte dei server dedicati funziona bene con un proxy TCP/UDP raw come quello che configurerai. Alcuni giochi, tipo BeamMP, potrebbero non funzionare bene con VPN e proxy, quindi testa caso per caso.

Configurazione Nginx

Serve il modulo Nginx Stream, che non è incluso nella build standard di Nginx.

Installa il modulo stream di Nginx

sudo apt install -y libnginx-mod-stream

Configurazione stream di Nginx

Aggiungerai un blocco stream nel file principale nginx.conf dove definirai il server upstream e la porta su cui il proxy ascolterà.

Apri il file con:

sudo nano /etc/nginx/nginx.conf

Incolla questo template, sostituendo [your_target_server] con il server di destinazione e porta (es. :30120 per FiveM). Cambia [your_port_listener] con la porta su cui vuoi far ascoltare il proxy.

stream {
upstream targetServer {
# Inserisci il server di destinazione (es. 103.146.43.52:30120)
server [your_target_server];
}

server {
# Porta su cui il proxy ascolta e inoltra (es. 30120)
listen [your_port_listener];
proxy_pass targetServer;
}
}

In pratica, Nginx ascolterà sulla porta specificata e inoltrerà tutto al server di destinazione.

Salva e chiudi nano con CTRL + X, poi Y e ENTER.

Controlla la sintassi:

sudo nginx -t

Se è tutto ok, riavvia Nginx:

systemctl reload nginx.service

Ora prova a connetterti al server di gioco tramite il dominio proxy. Se funziona, ti connetterai al server impostato come targetServer. Se ci sono problemi, controlla i log con:

journalctl -f -u nginx.service

Certificato SSL

Ora che il reverse proxy è configurato, ti consigliamo di aggiungere un certificato SSL ai domini usati per garantire una trasmissione sicura via HTTPS. Dai un’occhiata alla nostra guida Installare Certbot, che spiega come richiedere e rinnovare automaticamente i certificati SSL per i tuoi domini.

Conclusione

Complimenti, hai configurato con successo un reverse proxy per un sito web o un server di gioco (o entrambi :), migliorando sicurezza, affidabilità e prestazioni. Per domande o supporto, il nostro team è sempre disponibile per aiutarti! 🙂