GNU/Linux >> Linux Esercitazione >  >> Debian

Utilizzo di ngx_pagespeed con nginx su Debian Jessie/testing

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.

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


Debian
  1. Installa Nginx con ngx_pagespeed su CentOS 7

  2. Come costruire nginx con il modulo Google PageSpeed ​​su Debian 8 (Jessie)

  3. Configurazione della replica Master-Master con MySQL su Debian 8 (Jessie)

  4. Installa Plone con Nginx su un VPS Debian 8

  5. Come installare WonderCMS con Nginx su Debian 11

Come installare Nextcloud 10 con Nginx su Debian 8

Come configurare ModSecurity con Nginx su Debian/Ubuntu

Come abilitare il protocollo HTTP2 con Nginx su Debian 8 Jessie Server

Come installare phpMyAdmin con Nginx su Debian 11 Bullseye

Come installare phpMyAdmin con Nginx su Debian 11

Utilizzo di RoundCube Webmail con ISPConfig 3 su Debian Wheezy (nginx)