VCL personalizzato per richieste di blocco
Puoi utilizzare il modulo Fastly CDN per il Magento 2 per creare un ACL di Edge con un elenco di indirizzi IP che desideri bloccare. Puoi quindi utilizzare tale elenco con uno snippet VCL per bloccare le richieste in ingresso. Il codice controlla l’indirizzo IP della richiesta in ingresso. Se corrisponde a un indirizzo IP incluso nell'elenco ACL, Fastly blocca la richiesta di accesso al sito e restituisce 403 Forbidden error
. A tutti gli altri indirizzi IP client è consentito l'accesso.
Prerequisiti:
-
L’ambiente deve essere configurato per utilizzare la rete CDN Fastly. Vedere Configurare Fastly Services.
-
Assicurati di eseguire la versione più recente del modulo CDN Fastly per il Magento 2. Consulta Aggiornare il modulo Fastly.
-
Verifica la configurazione dell’ambiente per il servizio Fastly. Vedi Controlla Fastly caching.
-
Per accedere agli ambienti di staging e produzione è necessario disporre delle credenziali di amministratore.
-
Elenco di indirizzi IP client da bloccare
Creare un ACL di Edge per bloccare gli indirizzi IP dei client
Puoi creare un ACL di Edge per definire l’elenco di indirizzi IP da bloccare. Dopo aver creato l’ACL, puoi utilizzarlo in uno snippet VCL personalizzato per gestire l’accesso al sito di staging o produzione.
Gestisci l’accesso sia per i siti di staging che per quelli di produzione creando l’ACL di Edge con lo stesso nome in entrambi gli ambienti. Il codice snippet VCL si applica a entrambi gli ambienti.
- Accedi all’amministratore.
- Passa a Archivi > Impostazioni > Configurazione > Avanzate > Sistema > Cache a pagina intera > Configurazione rapida.
- Espandi la sezione ACL di Edge.
- Fare clic su Aggiungi ACL per creare un elenco. In questo esempio, assegna all’elenco il nome "inserisce nell'elenco Bloccati di".
- Immettere i valori dell'indirizzo IP nell'elenco. Tutti gli indirizzi IP client aggiunti all'elenco sono bloccati e non possono accedere al sito.
- Se necessario, selezionare la casella di controllo Negato.
Puoi fare riferimento all’ACL di Edge per nome nel codice dello snippet VCL.
Creare il file VCL personalizzato per il inserisco nell'elenco Bloccati di
Dopo aver definito l'ACL di Edge, è possibile utilizzarlo per creare lo snippet VCL per bloccare l'accesso agli indirizzi IP specificati nell'ACL. Puoi utilizzare lo stesso frammento VCL sia negli ambienti di staging che in quelli di produzione, ma è necessario caricare il frammento in ogni ambiente separatamente.
Il seguente codice snippet VCL personalizzato (formato JSON) mostra la logica necessaria per bloccare le richieste in ingresso con un indirizzo IP client corrispondente a un indirizzo nel elenco Bloccati ACL di.
{
"name": "blocklist",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( client.ip ~ blocklist) { error 403 \"Forbidden\"; }"
}
Prima di creare uno snippet basato su questo esempio, esaminare i valori per determinare se è necessario apportare modifiche:
-
name
: nome dello snippet VCL. In questo esempio è stato utilizzato il nomeblocklist
. -
priority
: determina quando viene eseguito lo snippet VCL. La priorità è5
per l'esecuzione immediata e verificare se una richiesta dell'amministratore proviene da un indirizzo IP consentito. Il frammento viene eseguito prima che a uno dei frammenti VCL di Magento predefiniti (magentomodule_*
) sia assegnata una priorità di 50. Impostare la priorità per ogni frammento personalizzato su un valore maggiore o minore di 50 a seconda di quando si desidera eseguire il frammento. I frammenti con numeri di priorità inferiore vengono eseguiti per primi. -
type
: specifica il tipo di frammento VCL che determina la posizione del frammento nel codice VCL generato. In questo esempio, viene utilizzatorecv
, che inserisce il codice VCL nella subroutinevcl_recv
, sotto il VCL boilerplate e sopra qualsiasi oggetto. Per l'elenco dei tipi di snippet, vedere Fastly VCL snippet reference -
content
: snippet di codice VCL da eseguire, che controlla l'indirizzo IP del client. Se l'IP si trova nell'ACL di Edge, l'accesso viene bloccato con un errore403 Forbidden
per l'intero sito Web. A tutti gli altri indirizzi IP client è consentito l'accesso.
Dopo aver esaminato e aggiornato il codice per l’ambiente, utilizza uno dei metodi seguenti per aggiungere lo snippet VCL personalizzato alla configurazione del servizio Fastly:
-
Aggiungi lo snippet VCL personalizzato dall'amministratore. Questo metodo è consigliato se puoi accedere all’Admin. (Richiede Fastly versione 1.2.58 o successiva.)
-
Salva l'esempio di codice JSON in un file (ad esempio,
blocklist.json
) e caricalo utilizzando l'API Fastly. Utilizza questo metodo se non riesci ad accedere all’Admin.
Aggiungere lo snippet VCL personalizzato
-
Accedi all'amministratore.
-
Fai clic su Archivi > Impostazioni > Configurazione > Avanzate > Sistema.
-
Espandi Cache a pagina intera > Configurazione rapida > Snippet VCL personalizzati.
-
Fare clic su Crea snippet personalizzato.
-
Aggiungi i valori dello snippet VCL:
-
Nome -
blocklist
-
Tipo -
recv
-
Priorità -
5
-
Aggiungi il contenuto dello snippet VCL:
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
Fai clic su Crea per generare il file snippet VCL con il modello nome
type_priority_name.vcl
, ad esempiorecv_5_blocklist.vcl
-
Dopo il ricaricamento della pagina, fare clic su Carica VCL in Fastly nella sezione Fastly Configuration per aggiungere il file alla configurazione del servizio Fastly.
-
Dopo i caricamenti, aggiorna la cache in base alla notifica nella parte superiore della pagina.
Convalida infine la versione aggiornata del codice VCL durante il processo di caricamento. Se la convalida non riesce, modifica lo snippet VCL personalizzato per risolvere il problema. Quindi, carica nuovamente il file VCL.
Ulteriori esempi VCL per richieste di blocco
Gli esempi seguenti mostrano come bloccare le richieste utilizzando istruzioni di condizione in linea anziché un elenco ACL.
- Nome:
<name of the VCL>
- Dinamico:
<0/1>
- Tipo:
<type>
- Priorità:
<priority>
- Contenuto:
<content>
Consulta Utilizzo di snippet VCL dinamici nella documentazione di Fastly VCL.
Esempio di codice VCL: Blocco per codice paese
In questo esempio viene utilizzato il codice paese ISO 3166-1 a due caratteri per il paese associato all’indirizzo IP.
{
"name": "blockbycountrycode",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
Esempio di codice VCL: Blocca per intestazione di richiesta HTTP dell’agente utente
{
"name": "blockbyuseragent",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom
nell'ambiente. I frammenti in questa directory vengono caricati automaticamente quando si fa clic su carica VCL in Fastly in Commerce Admin. Consulta Distribuzione automatizzata di snippet VCL personalizzati nel modulo Fastly CDN per la documentazione del Magento 2.Modificare lo snippet VCL personalizzato
-
Accedi all'amministratore.
-
Fai clic su Archivi > Impostazioni > Configurazione > Avanzate > Sistema.
-
Espandi Cache a pagina intera > Configurazione rapida > Snippet VCL personalizzati.
-
Nella colonna Azione fare clic sull'icona delle impostazioni accanto al frammento da modificare.
-
Dopo il ricaricamento della pagina, fai clic su Carica VCL in Fastly nella sezione Fastly Configuration.
-
Al termine del caricamento, aggiorna la cache in base alla notifica nella parte superiore della pagina.
Elimina lo snippet VCL personalizzato
-
Accedi all'amministratore.
-
Fai clic su Archivi > Impostazioni > Configurazione > Avanzate > Sistema.
-
Espandi Cache a pagina intera > Configurazione rapida > Snippet VCL personalizzati.
-
Nella colonna Azione, fai clic sull'icona del cestino accanto allo snippet da eliminare.
-
Nella finestra modale successiva, fai clic su DELETE e attiva una nuova versione.