Creazione di una distribuzione CloudFront - Best practice per WordPress su AWS

Creazione di una distribuzione CloudFront

Creare una distribuzione Web CloudFront seguendo la distribuzione, l'origine e il comportamento predefiniti creati automaticamente per i contenuti dinamici. Creare quattro comportamenti aggiuntivi per personalizzare ulteriormente il modo in cui vengono trattate le richieste statiche e dinamiche. Nella tabella seguente vengono riepilogate le proprietà di configurazione per i cinque comportamenti. È anche possibile saltare questa configurazione manuale e utilizzare il plug-in AWS per WordPress trattato nell'Appendice B: Installazione e configurazione di plug-in: è il modo più semplice per configurare CloudFront per accelerare il sito WordPress.

Tabella 1: Riepilogo delle proprietà di configurazione per i comportamenti di CloudFront

Proprietà Statico Dinamico (amministratore) Dinamico (frontale)
Percorsi (comportamenti)

wp-content/*

wp-includes/*

wp-admin/*

wp-login.php

Predefinito (*)
Protocolli HTTP e HTTPS Reindirizzamento a HTTPS HTTP e HTTPS
Metodi HTTP GET, HEAD ALL ALL
Intestazioni HTTP NONE ALL

Host

CloudFront-Forwarded-Proto

CloudFront-Is-Mobile-Viewer

CloudFront-Is-Tablet-Viewer

CloudFront-Is-Desktop-Viewer

Cookie NONE ALL

comment_*

wordpress_*

wp-settings-*

Stringhe di query YES (invalidamento)

Per il comportamento predefinito, AWS consiglia la seguente configurazione:

  • Consentire la policy relativa al protocollo di origine per Match Viewer (Corrispondenza visualizzatore), in modo che se i visualizzatori si connettono a CloudFront tramite HTTPS, CloudFront si connette anche all'origine dell'utente tramite HTTPS, garantendo una crittografia end-to-end. Nota: è richiesta l'installazione di un certificato SSL attendibile sul sistema di bilanciamento del carico. Maggiori dettagli sono disponibili nel documento Richiesta di una connessione HTTPS per la comunicazione tra CloudFront e il server di origine personalizzato.

  • Consentire tutti i metodi HTTP, dal momento che le parti dinamiche del sito Web hanno bisogno sia di richieste GET che POST (ad esempio, per supportare POST per i moduli per l’invio di commenti).

  • Inoltrare solo i cookie che modificano l'output di WordPress, ad esempio >wordpress_*, wp-settings-* e comment_*. È necessario estendere tale elenco se sono stati installati plug-in che dipendono da altri cookie non presenti in elenco.

  • Inoltrare solo le intestazioni HTTP che influiscono sull'output di WordPress, ad esempio Host, CloudFront-Forwarded-Proto, CloudFront-is-Desktop-Viewer, CloudFront-is-Mobile-Viewer e CloudFront-is-Tablet-Viewer:

    • Host consente a più siti Web WordPress di essere ospitati sulla stessa origine.

    • CloudFront-Forwarded-Proto consente di memorizzare nella cache diverse versioni delle pagine a seconda del fatto che per l’accesso si utilizzi HTTP o HTTPS.

    • CloudFront-is-Desktop-Viewer, CloudFront-is-Mobile-Viewer e CloudFront-is-Tablet-Viewer consentono di personalizzare l'output dei temi in base al tipo di dispositivo dell'utente finale.

  • Inoltrare tutte le stringhe di query alla cache in base ai loro valori, perché WordPress dipende da questi; possono anche essere utilizzati per invalidare gli oggetti memorizzati nella cache.

Se si desidera utilizzare il sito Web con un nome di dominio personalizzato (ovvero, diverso da *.cloudfront.net), inserire gli URI appropriati in Alternate Domain Names (Nomi di dominio alternativi) in Distribution Settings (Impostazioni di distribuzione). In questo caso, è necessario anche un certificato SSL per il nome di dominio personalizzato. È possibile richiedere certificati SSL tramite AWS Certificate Manager e configurarli in base a una distribuzione CloudFront.

Ora, creare altri due comportamenti della cache per i contenuti dinamici: uno per la pagina di accesso (modello di percorso: wp-login.php) e uno per la dashboard di amministrazione (modello percorso: wp-admin/*). Questi due comportamenti hanno esattamente le stesse impostazioni, ovvero:

  • Applicazione della policy solo HTTPS per il protocollo del visualizzatore.

  • Tutti i metodi HTTP consentiti.

  • Cache basata su tutte le intestazioni HTTP.

  • Inoltro di tutti i cookie

  • Inoltro e caching eseguiti in base a tutte le stringhe di query.

Il motivo alla base di questa configurazione è che questa sezione del sito Web include un livello di personalizzazione elevato e, in genere, ha solo pochi utenti, per cui l'efficienza del caching non è una priorità. L'obiettivo è quello di mantenere la configurazione semplice per garantire la massima compatibilità con qualsiasi plug-in installato migrando tutti i cookie e le intestazioni nell'origine.

Il plug-in AWS per WordPress discusso nell'Appendice B crea automaticamente una distribuzione CloudFront che soddisfa i requisiti della configurazione precedente.

Per impostazione predefinita, WordPress esegue la memorizzazione in locale sul server Web, più in particolare nello storage a blocchi (Amazon EBS) per la distribuzione a server singolo e nello storage di file (Amazon EFS) per la distribuzione elastica. Oltre a ridurre i costi di storage e trasferimento dei dati, la migrazione di asset statici su Amazon S3 offre un migliore livello di scalabilità, disponibilità dei dati, sicurezza e prestazioni. Esistono diversi plug-in che semplificano la migrazione di contenuti statici su Amazon S3; uno di questi è W3 Total Cache, anch'esso trattato nell'Appendice B: Installazione e configurazione di plug-in.