Dedicated Server: 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 i motivi più comuni per implementare 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 sono simili per la maggior parte delle distribuzioni Linux.
Per un reverse proxy dedicato a server di gioco, consigliamo vivamente di scegliere velocità di rete elevate, soprattutto se il server ha molti giocatori. Questo perché il VPS trasmetterà TCP/UDP raw direttamente tra client (giocatore) e server di gioco. Per un proxy web invece, un server con specifiche base e pochi upgrade è 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) che punti all’indirizzo IP del tuo Linux VPS. Gli utenti useranno questo per accedere al 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
Userai Nginx per ospitare il reverse proxy, è un web server open-source molto performante e popolare.
Dopo aver effettuato l’accesso al VPS, installa Nginx con questo comando:
sudo apt install nginx
Una volta installato, devi configurare il firewall per permettere l’accesso 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.
Se usi altri firewall (es. Iptables), assicurati di aprire le porte 80 e 443 per Nginx.
Controlla i profili di Nginx con sudo ufw app list. Qui selezioneremo Nginx Full, che apre sia HTTP (per test) che HTTPS (per produzione).
sudo ufw allow 'Nginx Full'
Ora prova ad accedere alla pagina via browser per verificare che funzioni. Se vedi la pagina di test, puoi procedere.
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 specificare la porta nell’URL) o inoltrare l’utente a contenuti esterni, utile per bilanciamento del carico e protezione.
Uno dei vantaggi più grandi è che il server può gestire richieste da più domini/sorgenti, a differenza di un singolo web server che gira su porta 80/443.
Configurazione Nginx
Inizia creando un file di configurazione nella cartella di Nginx per il dominio scelto, di solito un sottodominio come zapdocs.example.com nel nostro esempio.
Assicurati di aver creato un record A che punti all’IP del proxy prima di procedere. 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 il dominio come nome file 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, sostituendo [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;
}
}
Adatta i valori, poi salva e chiudi nano con CTRL + X, conferma con Y e premi 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 usato per il reverse proxy dal browser. Se tutto funziona, vedrai il contenuto del server target. 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 sicurezza e affidabilità, migliorando la mitigazione e limitando l’accesso al server principale.
La maggior parte dei server dedicati funziona bene con un proxy TCP/UDP raw come questo. Alcuni giochi, tipo BeamMP, potrebbero non funzionare bene con VPN o proxy, quindi testa caso per caso.
Configurazione Nginx
Serve il modulo Nginx Stream, non incluso nella build base di Nginx.
Installa il modulo stream di Nginx
- Ubuntu & Debian
- CentOS & Fedora
sudo apt install -y libnginx-mod-stream
sudo dnf -y install nginx-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). Sostituisci [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 ascoltare e fare da ponte (es. 30120)
listen [your_port_listener];
proxy_pass targetServer;
}
}
Nginx ascolterà su quella porta e inoltrerà tutto al server di destinazione.
Salva e chiudi nano con CTRL + X, conferma con Y e premi ENTER.
Controlla la sintassi:
sudo nginx -t
Se 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 :), ottenendo miglioramenti in sicurezza, affidabilità e performance. Per domande o supporto, il nostro team è sempre disponibile per aiutarti! 🙂