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.
- Digita il seguente comando per aprire il file di configurazione predefinito di Nginx. Se ogni dominio ha un file di configurazione separato, usa il suo nome invece di quello predefinito.
- Nel default o nel file di configurazione digitare i codici indicati in uno dei metodi successivi said. Assicurati di usarne solo uno.
- Usa il seguente comando per testare il file di configurazione prima di spingerlo in modalità live.
- Se tutto è nell'ordine giusto, vai avanti e digita il seguente comando per applicare le modifiche affinché abbiano effetto.
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.
- Copia il seguente frammento di codice.
- Apri il file predefinito di nginx come visto nella fase "Preparazione".
- 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.
- 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.
- Copia il seguente frammento di codice nel mezzo e all'inizio del blocco della posizione principale.
- Sostituisci l'elenco dei nomi di dominio con i nomi di dominio consentiti, ad esempio google, bing o i tuoi domini, ecc.
- 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.