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.

  1. Accedi all’amministratore.
  2. Passa a Archivi > Impostazioni > Configurazione > Avanzate > Sistema > Cache a pagina intera > Configurazione rapida.
  3. Espandi la sezione ACL di Edge.
  4. Fare clic su Aggiungi ACL per creare un elenco. In questo esempio, assegna all’elenco il nome "inserisce nell'elenco Bloccati di".
  5. Immettere i valori dell'indirizzo IP nell'elenco. Tutti gli indirizzi IP client aggiunti all'elenco sono bloccati e non possono accedere al sito.
  6. 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

NOTE
Questo esempio mostra agli utenti avanzati come creare uno snippet di codice VCL per configurare regole di blocco personalizzato da caricare nel servizio Fastly. È possibile configurare un inserisco nell'elenco Bloccati di Adobe Commerce o di basato sul paese dall'amministratore di inserire nell'elenco Consentiti utilizzando la funzionalità Blocco disponibile nella rete CDN Fastly per il modulo Magento 2.

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 nome blocklist.

  • 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 utilizzato recv, che inserisce il codice VCL nella subroutine vcl_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 errore 403 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:

Aggiungere lo snippet VCL personalizzato

  1. Accedi all'amministratore.

  2. Fai clic su Archivi > Impostazioni > Configurazione > Avanzate > Sistema.

  3. Espandi Cache a pagina intera > Configurazione rapida > Snippet VCL personalizzati.

  4. Fare clic su Crea snippet personalizzato.

  5. 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"; }
      
  6. Fai clic su Crea per generare il file snippet VCL con il modello nome type_priority_name.vcl, ad esempio recv_5_blocklist.vcl

  7. 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.

  8. 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.

WARNING
In questi esempi, il codice VCL è formattato come payload JSON che può essere salvato in un file e inviato in una richiesta API Fastly. È possibile inviare lo snippet VCL dall'amministratore o come stringa JSON utilizzando l'API Fastly. Per evitare errori di convalida quando utilizzi l’API Fastly con una stringa JSON, devi utilizzare una barra rovesciata per eliminare i caratteri speciali.
NOTE
Se si invia lo snippet VCL dall'amministratore, estrarre i singoli valori dal codice VCL di esempio e inserirli nei campi corrispondenti. Ad esempio:
  • 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\";}"
}
NOTE
Invece di utilizzare uno snippet VCL personalizzato, puoi utilizzare la funzione di blocco rapido nell'amministratore di Adobe Commerce sull'infrastruttura cloud per configurare il blocco in base al codice del paese o a un elenco di codici del paese.

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\";}"
}
NOTE
Anziché caricare manualmente snippet VCL personalizzati, è possibile aggiungere snippet alla directory $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

  1. Accedi all'amministratore.

  2. Fai clic su Archivi > Impostazioni > Configurazione > Avanzate > Sistema.

  3. Espandi Cache a pagina intera > Configurazione rapida > Snippet VCL personalizzati.

    Gestione snippet VCL personalizzati

  4. Nella colonna Azione fare clic sull'icona delle impostazioni accanto al frammento da modificare.

  5. Dopo il ricaricamento della pagina, fai clic su Carica VCL in Fastly nella sezione Fastly Configuration.

  6. Al termine del caricamento, aggiorna la cache in base alla notifica nella parte superiore della pagina.

WARNING
L'opzione dell'interfaccia utente Snippet VCL personalizzati mostra solo i frammenti aggiunti tramite l'amministratore Adobe Commerce. Se aggiungi snippet utilizzando l'API Fastly, utilizza l'API per gestirli.

Elimina lo snippet VCL personalizzato

  1. Accedi all'amministratore.

  2. Fai clic su Archivi > Impostazioni > Configurazione > Avanzate > Sistema.

  3. Espandi Cache a pagina intera > Configurazione rapida > Snippet VCL personalizzati.

    Gestione snippet VCL personalizzati

  4. Nella colonna Azione, fai clic sull'icona del cestino accanto allo snippet da eliminare.

  5. Nella finestra modale successiva, fai clic su DELETE e attiva una nuova versione.

WARNING
L'opzione dell'interfaccia utente Snippet VCL personalizzati mostra solo i frammenti aggiunti tramite l'amministratore Adobe Commerce. Se aggiungi snippet utilizzando l'API Fastly, utilizza l'API per gestirli.
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26