PageSpeed Beta è disponibile per nginx, l'equivalente nginx di mod_pagespeed per Apache. Questo modulo applica le migliori pratiche per le prestazioni web alle pagine e alle risorse associate (CSS, JavaScript, immagini) e quindi velocizza il tuo sito web e riduce i tempi di caricamento. Questo tutorial spiega come usare PageSpeed con nginx su Debian Jessie/testing.
Non garantisco che questo funzionerà per te!
1 Costruire nginx con PageSpeed
nginx non supporta il caricamento dinamico dei moduli, quindi dobbiamo ricostruirlo con il supporto di PageSpeed. Creeremo nginx come pacchetto .deb in modo da poter sostituire la nostra installazione esistente di nginx con esso (o installarlo facilmente su altri sistemi).
Crea prima la directory build:
cd /usr/src
mkdir pagespeed &&cd pagespeed
Assicurati di avere le righe deb e deb-src per Jessie/testing in /etc/apt/sources.list:
vi /etc/apt/sources.list
[...] deb http://ftp.de.debian.org/debian testing main contrib non-free deb-src http://ftp.de.debian.org/debian testing main contrib non-free [...] |
Aggiorna l'elenco dei pacchetti e installa alcuni prerequisiti:
apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev
Scarica i sorgenti di nginx e le dipendenze di build:
apt-get source nginx
apt-get build-dep nginx
Controlliamo la nostra versione di nginx:
ls -l
[email protetta]:/usr/src/pagespeed# ls -l
total 2292
drwxr-xr-x 10 root root 4096 feb 5 12:54 nginx-1.4.4
-rw -r--r-- 1 root 1568452 Jan 7 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 root root 2171 Jan 7 19:22 nginx_1 .4.4-4.dsc
-rw-r--r-- 1 root root 768217 21 nov 16:28 nginx_1.4.4.orig.tar.gz
[email protected]:/usr/src /pagespeed#
La nostra versione di nginx è 1.4.4. Andiamo nella directory debian/modules dei sorgenti nginx scaricati...
cd /usr/src/pagespeed/nginx-1.4.4/debian/modules
... e scarica i sorgenti di PageSpeed (puoi controllare l'ultima versione su questa pagina:https://github.com/pagespeed/ngx_pagespeed/releases - in questo esempio la versione è 1.7.30.3-beta; se la tua versione è diversa , assicurati di sostituirlo nel resto di questo tutorial):
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.7.30.3-beta.zip
unzip release-1.7.30.3-beta.zip
cd ngx_pagespeed-release-1.7.30.3 -beta/
wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz
tar -xzvf 1.7.30.3.tar.gz
Modifichiamo il file debian/rules:
vi /usr/src/pagespeed/nginx-1.4.4/debian/rules
In quel file troverai quattro sezioni config.status (config.status.full, config.status.light, config.status.extras, config.status.naxsi). Aggiungi la riga --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \ a ciascuno di essi, subito prima della riga $(CONFIGURE_OPTS)>[email protected], ad es. come segue:
[...] config.status.full: config.env.full cd $(BUILDDIR_full) && CFLAGS="$(CFLAGS)" CORE_LINK="$(LDFLAGS)" ./configure \ --prefix=/usr/share/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-client-body-temp-path=/var/lib/nginx/body \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --http-log-path=/var/log/nginx/access.log \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --http-scgi-temp-path=/var/lib/nginx/scgi \ --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \ --lock-path=/var/lock/nginx.lock \ --pid-path=/run/nginx.pid \ --with-pcre-jit \ --with-debug \ --with-http_addition_module \ --with-http_dav_module \ --with-http_geoip_module \ --with-http_gzip_static_module \ --with-http_image_filter_module \ --with-http_realip_module \ --with-http_spdy_module \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_sub_module \ --with-http_xslt_module \ --with-ipv6 \ --with-mail \ --with-mail_ssl_module \ --add-module=$(MODULESDIR)/nginx-auth-pam \ --add-module=$(MODULESDIR)/nginx-dav-ext-module \ --add-module=$(MODULESDIR)/nginx-echo \ --add-module=$(MODULESDIR)/nginx-upstream-fair \ --add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \ --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \ $(CONFIGURE_OPTS) >[email protected] touch [email protected] [...] |
Ora costruiamo i nostri nuovi pacchetti nginx:
cd /usr/src/pagespeed/nginx-1.4.4/ && dpkg-buildpackage -b
Successivamente, diamo un'occhiata ai pacchetti generati:
cd /usr/src/pagespeed
ls -l
[email protetta]:/usr/src/pagespeed# ls -l
total 67260
drwxr-xr-x 10 root root 4096 feb 5 13:18 nginx-1.4.4
-rw -r--r-- 1 root 67132 Feb 5 13:18 nginx_1.4.4-4_all.deb
-rw-r--r-- 1 root 4749 Feb 5 13:19 nginx_1.4.4-4_amd64 .changes
-rw-r--r-- 1 root root 1568452 Jan 7 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 root root 2171 7 gennaio 19:22 nginx_1.4.4-4.dsc
-rw-r--r-- 1 root root 768217 21 nov 16:28 nginx_1.4.4.orig.tar.gz
- rw-r--r-- 1 root root 79288 feb 5 13:18 nginx-common_1.4.4-4_all.deb
-rw-r--r-- 1 root root 78448 feb 13:18 nginx- doc_1.4.4-4_all.deb
-rw-r--r-- 1 root root 2520834 feb 5 13:19 nginx-extras_1.4.4-4_amd64.deb
-rw-r--r- - 1 root 25480472 5 feb 13:19 nginx-extras-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 root 2372314 5 febbraio 13:18 nginx-full_1.4.4-4_amd64 .deb
-rw-r--r-- 1 root root 23850670 feb 5 13:19 nginx-full-dbg_1.4.4-4_amd64.deb
-rw-r-- r-- 1 root root 2349992 feb 5 13:19 nginx-light_1.4.4-4_amd64.deb
-rw-r--r-- 1 root root 3416998 feb 5 13:19 nginx-light-dbg_1.4.4 -4_amd64.deb
-rw-r--r-- 1 root 2384044 feb 5 13:19 nginx-naxsi_1.4.4-4_amd64.deb
-rw-r--r-- 1 root root 3581602 feb 5 13:19 nginx-naxsi-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 root root 309478 feb 13:18 nginx-naxsi-ui_1.4.4-4_all. deb
[email protetta]:/usr/src/pagespeed#
Ora possiamo installare nginx con il supporto di PageSpeed come segue:
dpkg --install nginx-common_1.4.4-4_all.deb nginx_1.4.4-4_all.deb nginx-full_1.4.4-4_amd64.deb
/etc/init.d/nginx restart
Verifichiamo se il modulo PageSpeed è stato compilato correttamente:
nginx -V
Dovresti vedere il modulo ngx_pagespeed nell'output:
[email protetta]:/usr/src/pagespeed# nginx -V
nginx version:nginx/1.4.4
Supporto SNI TLS abilitato
configure arguments:--prefix=/usr/share /nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib /nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with -http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_spdy_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-mail --with -mail_ssl_module --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/nginx-auth -pam --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/nginx-dav-ext-module --add-module=/usr/src/pagespeed/nginx-1.4.4 /debian/modules/nginx-echo --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/nginx-upstream-fair --add-module=/usr/src/pagespeed/nginx -1.4.4/debian/modules/ngx_http_substitutions_filter_module --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/ngx_pagespeed-release-1.7.30.3-beta
[email protetta] :/usr/src/pagespeed#
2 Configurazione di PageSpeed
Per abilitare PageSpeed, apri /etc/nginx/nginx.conf...
vi /etc/nginx/nginx.conf
... e aggiungi le righe su pagespeed; e pagespeed FileCachePath /var/ngx_pagespeed_cache; prima di qualsiasi vhost:
[...] pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; [...] |
Crea la directory della cache e ricarica nginx:
mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
/etc/init.d/nginx reload
Carichiamo una pagina e controlliamo se PageSpeed è menzionato nell'output:
curl -I -p http://localhost|grep X-Page-Speed
[email protected]:/usr/src/pagespeed# curl -I -p http://localhost|grep X-Page-Speed
% Totale % ricevuto % Xferd Velocità media Tempo Tempo Tempo Corrente
Carica Totale Esaurito Velocità sinistra
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
X-Page- Velocità: 1.7.30.3-3721
[email protetta]:/usr/src/pagespeed#
Ora possiamo configurare PageSpeed individualmente o ciascun vhost, ad es. così:
vi /etc/nginx/sites-available/example.com.vhost
server { [...] # let's speed up PageSpeed by storing it in the super duper fast memcached pagespeed MemcachedThreads 1; pagespeed MemcachedServers "localhost:11211"; # Filter settings pagespeed RewriteLevel CoreFilters; pagespeed EnableFilters collapse_whitespace,remove_comments; # Ensure requests for pagespeed optimized resources go to the pagespeed # handler and no extraneous headers get set. location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } location ~ "^/ngx_pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon$" { } location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; } location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; } location /ngx_pagespeed_message { allow 127.0.0.1; deny all; } location /pagespeed_console { allow 127.0.0.1; deny all; } [...] } |
La riga importante è la riga EnableFilters di pagespeed che indica a PageSpeed quali filtri dovrebbe applicare. Puoi trovare un elenco di tutti i filtri qui:http://ngxpagespeed.com/ngx_pagespeed_example/
Non dimenticare di riavviare nginx in seguito:
/etc/init.d/nginx reload
Quando apri una pagina ora e dai un'occhiata alle intestazioni (ad esempio con il componente aggiuntivo Live HTTP headers per FireFox), dovresti vedere una linea x-page-speed:
Puoi controllare i sorgenti HTML delle tue pagine per vedere se i filtri PageSpeed funzionano come previsto.
3 link
- Blog degli sviluppatori di Google:http://googledevelopers.blogspot.nl/2013/04/speed-up-your-sites-with-pagespeed-for.html
- ngx_pagespeed:https://developers.google.com/speed/pagespeed/ngx
- Costruzione/utilizzo di PageSpeed:https://github.com/pagespeed/ngx_pagespeed
- Esempi di filtri ngx_pagespeed:http://ngxpagespeed.com/ngx_pagespeed_example/
Informazioni sull'autore
Falko Timme è il proprietario di Timme Hosting (hosting web nginx ultra veloce). È il principale manutentore di HowtoForge (dal 2005) e uno dei principali sviluppatori di ISPConfig (dal 2000). Ha anche contribuito al libro di O'Reilly "Linux System Administration".