Nginx

Come bloccare l'hotlinking con Nginx

Come bloccare l'hotlinking con Nginx
Nginx è un server web leggero in grado di gestire un numero enorme di richieste in un dato momento senza rendere il server occupato. Contiene funzionalità sofisticate come elaborazione asincrona, supporto per ipv6, caricatore cache, supporto http/2, hotlinking dei blocchi, pool di thread, SPDY e SSL e molto altro. Tra queste, una delle funzionalità più importanti per qualsiasi sito Web in generale è il blocco hotlinking. L'hotlinking è una pratica dannosa spesso praticata da alcuni piccoli webmaster quando non sono in grado di permettersi il costo della larghezza di banda e quindi finiscono per prenderlo da qualche altra parte. Ciò impedisce ai webmaster legittimi di utilizzare la larghezza di banda per cui hanno pagato. Inoltre, la risorsa collegata potrebbe non essere disponibile per gli utenti che visitano il sito Web originale, quando la larghezza di banda assegnata per il webmaster originale è esaurita e il proprietario del sito non ha pagato per la larghezza di banda consumata in modo eccessivo. Tutto sommato, per preservare l'integrità, la disponibilità dell'hotlinking del sito Web dovrebbe essere interrotta e questa guida insegna come farlo con facilità.

Preparazione

Nel segmento della preparazione, vengono rimosse le istruzioni generali per entrambi i metodi successivi. Ovviamente è importante avere una console per accedere al server su SSH, e un editor di testo adeguato come nano per aprire il file di configurazione di Nginx. Una volta acquisiti entrambi, utilizzare i seguenti comandi per aprire, salvare e applicare le modifiche. I seguenti passaggi presuppongono che l'utente abbia già effettuato l'accesso al server tramite SSH.

nano /etc/nginx/sites-available/default

Metodo 1: Metodo generale

Il metodo generale è molto facile da implementare e comprendere poiché contiene solo un blocco di posizione location. Inoltre, blocca le richieste solo a determinati formati di file invece di bloccare ogni richiesta da referenti non validi al server.

  1. Copia il seguente frammento di codice.
  2. Apri il file predefinito di nginx come visto nella fase "Preparazione".
  3. Incolla lo snippet di codice copiato sotto il primo blocco di posizione trovato nel file predefinito. In nginx, l'espressione regolare senza distinzione tra maiuscole e minuscole (~*) ha sempre la priorità prima della barra (/), e quindi il seguente frammento di codice viene eseguito prima del blocco di posizione della barra.
  4. Salva e chiudi il file predefinito, quindi segui i passaggi 3, 4 nella fase "Preparazione" per rendere effettive le modifiche.

Nell'esempio seguente, blocca le richieste ai file css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf e eot. Ci sono 10 istruzioni condizionali sotto il blocco della posizione. La prima dichiarazione condizionale consente di visualizzare direttamente le risorse tramite il browser Web, 2nd e 3rd i blocchi consentono di visualizzare le risorse attraverso il sito originale (sia i sottodomini nudi che i sottodomini www), il resto dei blocchi eccetto la ricerca?q e l'ultimo blocco consentono ai crawler dei motori di ricerca di accedere e indicizzare le risorse, il che è molto importante per indicizzare le immagini sia in immagini google che in immagini bing. La ricerca?q consente al servizio cache di Google di accedere e salvare le risorse insieme alla pagina, in modo che la pagina sia accessibile direttamente tramite i risultati di ricerca di Google quando il sito è offline.

posizione ~* \.(css|gif|ico|jpeg|jpg|js|png|woff|woff2|ttf|ttc|otf|eot)$
if ($http_referer !~ "^$")
imposta $regola_0 1$regola_0;

if ($http_referer !~ "^http://nucuta.com/.*$")
imposta $regola_0 2$regola_0;

if ($http_referer !~ "^http://nucuta.com$")
imposta $regola_0 3$regola_0;

if ($http_referer !~* "google.")
imposta $regola_0 4$regola_0;

if ($http_referer !~* "cerca?q=cache")
imposta $regola_0 5$regola_0;

if ($http_referer !~* "msn.")
imposta $regola_0 6$regola_0;

if ($http_referer !~* "yahoo.")
imposta $regola_0 7$regola_0;

if ($http_user_agent !~* "googlebot")
imposta $regola_0 8$regola_0;

if ($http_user_agent !~* "msnbot")
imposta $regola_0 9$regola_0;

if ($http_user_agent !~* "slurp")
imposta $regola_0 10$regola_0;

if ($regola_0 = "10987654321")
ritorno 403;
rompere;

Metodo 2: Metodo Valid_Referers

I referenti validi sono il metodo più conveniente e ampiamente riconosciuto per bloccare facilmente i referenti non validi. Contiene solo due righe rispetto al metodo precedente ed è molto flessibile. Tuttavia, è un po' difficile da digerire poiché si tratta di espressioni regolari e un meccanismo diverso per bloccare le richieste da referenti non validi.

  1. Copia il seguente frammento di codice nel mezzo e all'inizio del blocco della posizione principale.
  2. Sostituisci l'elenco dei nomi di dominio con i nomi di dominio consentiti, ad esempio google, bing o i tuoi domini, ecc.
  3. Salva e chiudi il file predefinito, quindi segui i passaggi 3, 4 nella fase "Preparazione" per rendere effettive le modifiche.

valid_referers nessuno bloccato server_names

*.linux.com linux.* www.linux.com/su/
~\.linux\.;
 
if ($invalid_referer)
ritorno 403;

Ha principalmente due blocchi di codice, valid_referers e l'espressione condizionale if con variabile invalid_referer. Per impostazione predefinita, questo blocco di codice viene utilizzato nel mezzo e all'inizio del blocco di posizione prima dell'esecuzione di qualsiasi altro codice, ma può essere utilizzato anche in qualsiasi altro luogo, ad esempio tra un blocco di codice di posizione con espressioni regolari per rilevare formati di file specifici per rendere il blocco rilevante per i suddetti formati di file, come nel metodo 1. Come spiegato in precedenza, il metodo contiene solo due blocchi di codice, il primo blocco di codice contiene 3 parole chiave, il primo è "none" quando il campo referer è mancante nella richiesta HTTP, il secondo è "bloccato" quando il campo referer viene eliminato da qualsiasi intermediario, come proxy, firewall, ecc., la terza parola chiave è per specificare i nomi di dominio validi.

Quando il nome di dominio inizia con il simbolo "~" è considerato un'espressione regolare e quindi possono essere utilizzati modelli molto complessi, ma potrebbe essere difficile capire se le espressioni regolari non sono conosciute bene. Se nessuna delle condizioni è soddisfatta nell'istruzione valid_referers, la variabile invalid_referer viene impostata su una stringa vuota, altrimenti viene impostata su 1, cosa significa se la richiesta in arrivo non contiene alcun campo referer o se nginx ha identificato quel campo referer viene rimosso da un firewall o un proxy, o se il campo referer è impostato sui domini specificati (elenco di nomi di dominio validi), allora la variabile referer non valida viene impostata su una stringa vuota, e quindi la sua condizione se non viene eseguita. Tuttavia, se la richiesta proviene da un dominio che non è specificato nell'espressione valid_referers come dominio valido, allora è bloccato.

CONCLUSIONE

Assicurati di considerare questo contenuto e di evitare l'hotlinking sui tuoi siti ospitati da Nginx.

Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...
Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...