Limitare l'accesso al sito con Nginx

Filtraggio IP, protezione tramite password e blocco delle richieste indesiderate — tutto in un unico posto.

Controllare chi può accedere a cosa sul tuo server è un elemento fondamentale per gestire un'applicazione web sicura. Nginx mette a disposizione un toolkit solido: regole semplici basate su IP, HTTP Basic Auth, politiche di accesso combinate e altro ancora.

Suggerimento

Su VPS e server dedicati hai il pieno controllo sulla configurazione di Nginx e puoi applicare qualsiasi dei metodi descritti di seguito.

1. Bloccare l'accesso alle directory sensibili

Per impedire l'accesso diretto a directory come .svn che non devono essere pubbliche:

location ~ /.svn/ {
    deny all;
}

2. Controllo degli accessi basato su IP

Usa allow e deny per creare una whitelist su sezioni specifiche del tuo sito:

location /server-status {
    allow 111.111.111.111;
    allow 11.11.11.11;
    deny all;
}

Solo gli IP elencati vengono ammessi — tutti gli altri vengono respinti.

3. Protezione con password (HTTP Basic Auth)

Hai bisogno di mettere una schermata di login davanti a una sezione privata? Questo è il modo più diretto:

location /admin/ {
    auth_basic "Enter password to access";
    auth_basic_user_file /etc/nginx/basic.auth;
}

4. Protezione combinata: whitelist IP + password

La direttiva satisfy any lascia passare un visitatore se supera uno qualsiasi dei controlli — IP attendibile o credenziali valide. Utile quando vuoi che il tuo team acceda senza password, ma vuoi comunque consentire l'accesso ad altri che la conoscono:

location /admin/ {
    satisfy any;
    allow 111.111.111.111;
    allow 11.11.11.11;
    deny all;

    auth_basic "Enter password to access";
    auth_basic_user_file /etc/nginx/basic.auth;
}

I nostri prodotti e servizi

Hosting WebServizi di hosting affidabili per siti web di qualsiasi dimensione.
Ordina
VPSInfrastruttura cloud flessibile con accesso root completo.
Ordina
Server DedicatiServer dedicati per le massime prestazioni.
Ordina

5. Restituire 404 per i file statici mancanti

Evita che Nginx riveli informazioni sulla struttura del tuo server restituendo un 404 pulito per qualsiasi file statico che non esiste effettivamente su disco:

location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    try_files $uri =404;
}

6. Reindirizzamento basato su IP

Puoi reindirizzare i visitatori in modo condizionale in base all'origine della loro richiesta:

location / {
    if ($remote_addr != 111.111.111.111) {
        return 301 https://$host$request_uri;
    }
}

Tutte le richieste provenienti da indirizzi diversi da 111.111.111.111 verranno reindirizzate a https://$host$request_uri.

7. Protezione dal brute force con iptables

Per un ulteriore livello di difesa a livello di rete, puoi usare iptables per bloccare temporaneamente gli IP che martellano il tuo server con troppe richieste:

iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \
    -m recent --name bhttp --set
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \
    -m recent --name bhttp --update --seconds 120 \
    --hitcount 360 -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT

Questa regola blocca qualsiasi IP che apre più di 360 nuove connessioni nell'arco di 120 secondi.

Applicare le modifiche

Dopo aver modificato la configurazione di Nginx, ricarica il servizio per applicare le modifiche senza interrompere le connessioni attive:

systemctl reload nginx
# oppure
service nginx reload

Aiuto

Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!

Hai bisogno di aiuto?I nostri ingegneri ti aiuteranno gratuitamente con qualsiasi domanda in pochi minutiContattaci