2014-04-07 16 views
6

Ho ospitato il mio sito Web su Amazon Elastic BeanStalk. Usa nginx come server proxy e ha la compressione gzip abilitata. Ma quando eseguo PageInsights sul sito, viene segnalato che molti dei miei file di contenuto statico devono essere compressi con gzip. Perché PageSpeed ​​Insights non riconosce la compressione? C'è qualcosa in più che deve essere fatto?file statici mostrati come non compressi anche quando il server Web è stato configurato per la compressione gzip

+0

hai mai capito questo? L'ho abilitato e non comprime per me né –

+0

No, è ancora mostrato come non compresso. – gsrivast

risposta

5

penso di actully trovato la risposta

Abilitando la compressione gzip sul nginx, si attiva solo per text/html (cioè nginx predefinita http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_types)

al fine di consentire che per gli altri tipi, devi farlo esplicitamente. In caso di pianta di fagioli, creare il seguente file nel progetto

.ebextensions/gzip.config

e mettere il codice lì (assicurarsi di mantenere il rientro, è importante):

files: 
    /etc/nginx/conf.d/gzip.conf: 
    content: | 
     gzip_types application/json; 

Come potete vedere, nel mio caso ho avuto bisogno di gzip di file json, probabilmente avete problemi con Pagespeed lamentando file css e js, giusto? Come suggerisce il link sopra puoi usare un * jolly per comprimere tutto, ma in caso contrario, basta elencare i tipi MIME necessari nella configurazione, distribuirlo e controllare nuovamente PageSpeed ​​Insights.

+0

Grazie per il suggerimento! Anche se nel mio caso ci deve essere un altro problema. Ho un "Content-Type: text/html" ma non è ancora compresso. Forse non dovrei usare la Console AWS ma solo direttamente nginx config per abilitare gzip. Chissà cosa fa la console. –

0

La risposta di Dmitry funziona solo nel caso in cui non vi sia alcuna voce gzip_types nella configurazione predefinita imposta da Amazon. Questo è ora il caso e quindi sarà necessario scrivere un file di configurazione .ebextensions per sovrascrivere l'intera configurazione con uno personalizzato. Per fare questo è necessario:

  1. Scaricare la configurazione predefinita da una delle istanze tramite SSH. Sarà nella cartella /etc/nginx/conf.d ed essere chiamato 00_elastic_beanstalk_proxy.conf
  2. Creare un nuovo file nella cartella denominata .ebextensions proxy.conf che segue questo modello:

    files: 
        "/etc/nginx/conf.d/proxy.conf": 
        mode: "000644" 
        owner: root 
        group: root 
        content: | 
         # Paste the contents of the config you downloaded here 
         # at this indentation level 
    
    container_commands: 
        00_remove: 
        command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf" 
    
  3. Cambiare la configurazione di avere le gzip_types che si desidera.
  4. distribuire l'applicazione

Per riferimento questo è ciò che il mio lavoro proxy.conf lima assomiglia: https://pastebin.com/raw/KGvdsZc4

parola di cautela: mi è stato assicurato che è un caso d'uso comune per sovrascrivere l'intero config questo modo e mentre rende più facile cambiare la configurazione in futuro, ciò interromperà alcune funzionalità di AWS EB Web Tools. In particolare tutto ciò che effettua la configurazione di nginx (percorsi di file statici, compressione gzip, ecc.) Non funzionerà. Per apportare modifiche, è sufficiente modificare la configurazione direttamente in proxy.conf

0

la soluzione di techwes è stata molto utile e ha funzionato benissimo (nel mio caso, mi ha permesso di aggiungere l'applicazione/javascript al gzip_types), con una modifica: il il file nella cartella .ebextensions deve essere denominato con l'estensione .config, quindi dovrebbe essere proxy.config. (Ho provato ad aggiungere un commento al post di techwes ma non ho abbastanza rep!)

Si deve anche notare che se si spegne gzip nell'ambiente EB utilizzando la Console AWS (Ambiente> Configurazione> Configurazione software), rimuoverà le righe gzip dal file 00_elastic_beanstalk_proxy.conf, in modo da poter utilizzare un .config file per aggiungere un altro file .conf senza dover sostituire l'intero file 00_elastic_beanstalk_proxy.conf.