GNU/Linux >> Tutoriales Linux >  >> Debian

Uso de ngx_pagespeed con nginx en Debian Jessie/pruebas

PageSpeed ​​Beta está disponible para nginx, el equivalente nginx de mod_pagespeed para Apache. Este módulo aplica las mejores prácticas de rendimiento web a las páginas y los activos asociados (CSS, JavaScript, imágenes) y, por lo tanto, acelera su sitio web y reduce los tiempos de carga. Este tutorial explica cómo usar PageSpeed ​​con nginx en Debian Jessie/testing.

¡No emito ninguna garantía de que esto funcione para usted!

1 Construyendo nginx con PageSpeed

nginx no admite la carga dinámica de módulos, por lo tanto, debemos reconstruirlo con soporte para PageSpeed. Construiremos nginx como un paquete .deb para que podamos reemplazar nuestra instalación de nginx existente con él (o instalarlo fácilmente en otros sistemas).

Cree primero el directorio de compilación:

cd /usr/src
mkdir velocidad de página &&cd velocidad de página

Asegúrese de tener líneas deb y deb-src para Jessie/testing en /etc/apt/sources.list:

vi /etc/apt/sources.list

Actualice su lista de paquetes e instale algunos requisitos previos:

apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev

Descargue las fuentes de nginx y las dependencias de compilación:

apt-get source nginx
apt-get build-dep nginx

Revisemos nuestra versión de nginx:

ls -l

[email protected]:/usr/src/pagespeed# ls -l
total 2292
drwxr-xr-x 10 root root    4096 5 de febrero 12:54 nginx-1.4.4
-rw -r--r-- 1 raíz raíz 1568452 7 de enero 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 raíz raíz 2171 7 de enero 19:22 nginx_1 .4.4-4.dsc
-rw-r--r--  1 root root  768217 21 de noviembre 16:28 nginx_1.4.4.orig.tar.gz
[email protected]:/usr/src /pagespeed#

Nuestra versión nginx es 1.4.4. Vayamos al directorio debian/modules de las fuentes nginx descargadas...

cd /usr/src/pagespeed/nginx-1.4.4/debian/modules

... y descargue las fuentes de PageSpeed ​​(puede buscar la última versión en esta página:https://github.com/pagespeed/ngx_pagespeed/releases; en este ejemplo, la versión es 1.7.30.3-beta; si su versión es diferente , asegúrese de reemplazarlo en el resto de este tutorial):

wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.7.30.3-beta.zip
descomprimir la versión-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

Editemos el archivo debian/rules:

vi /usr/src/pagespeed/nginx-1.4.4/debian/rules

En ese archivo encontrará cuatro secciones config.status (config.status.full, config.status.light, config.status.extras, config.status.naxsi). Agregue la línea --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \ a cada uno de ellos, justo antes de la línea $(CONFIGURE_OPTS)>[email protected], p. de la siguiente manera:

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

Ahora construyamos nuestros nuevos paquetes nginx:

cd /usr/src/pagespeed/nginx-1.4.4/ && dpkg-buildpackage -b

Luego, echemos un vistazo a los paquetes generados:

cd /usr/src/pagespeed
ls -l

[email protected]:/usr/src/pagespeed# ls -l
total 67260
drwxr-xr-x 10 root root     4096 5 de febrero 13:18 nginx-1.4.4
-rw -r--r--  1 root root    67132 5 de febrero 13:18 nginx_1.4.4-4_all.deb
-rw-r--r--  1 root root     4749 5 de febrero 13:19 nginx_1.4.4-4_amd64 .cambios
-rw-r--r--  1 raíz raíz  1568452 7 de enero 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r--  1 raíz root     2171 7 de enero 19:22 nginx_1.4.4-4.dsc
-rw-r--r--  1 root root   768217 21 de noviembre 16:28 nginx_1.4.4.orig.tar.gz
- rw-r--r--  1 root root    79288 5 de febrero 13:18 nginx-common_1.4.4-4_all.deb
-rw-r--r--   1 root root    78448 5 de febrero 13:18 nginx- doc_1.4.4-4_all.deb
-rw-r--r--  1 raíz raíz  2520834 5 febrero 13:19 nginx-extras_1.4.4-4_amd64.deb
-rw-r--r- -  1 root root 25480472 5 de febrero 13:19 nginx-extras-dbg_1.4.4-4_amd64.deb
-rw-r--r--   1 root root 2372314 5 de febrero 13:18 nginx-full_1.4.4-4_amd64 .deb
-rw-r--r--  1 raíz raíz 23850670 5 de febrero 13:19 nginx-full-dbg_1.4.4-4_amd64.deb
-rw-r-- r--  1 root root  2349992 5 de febrero 13:19 nginx-light_1.4.4-4_amd64.deb
-rw-r--r--  1 root root 3416998 5 de febrero 13:19 nginx-light-dbg_1.4.4 -4_amd64.deb
-rw-r--r--  1 raíz raíz  2384044 5 febrero 13:19 nginx-naxsi_1.4.4-4_amd64.deb
-rw-r--r--  1 raíz root  3581602 5 de febrero 13:19 nginx-naxsi-dbg_1.4.4-4_amd64.deb
-rw-r--r--  1 root root   309478 5 de febrero 13:18 nginx-naxsi-ui_1.4.4-4_all. deb
[correo electrónico protegido]:/usr/src/pagespeed#

Ahora podemos instalar nginx con soporte de PageSpeed ​​de la siguiente manera:

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 

Verifiquemos si el módulo PageSpeed ​​se creó correctamente:

nginx -V

Debería ver el módulo ngx_pagespeed en el resultado:

[email protected]:/usr/src/pagespeed# nginx -V
versión de nginx:nginx/1.4.4
Compatibilidad con TLS SNI habilitada
configurar argumentos:--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 --con-http_image_filter_module --con-http_realip_module --con-http_spdy_module --con-http_stub_status_module --con-http_ssl_module --con-http_sub_module --con-http_xslt_module --con-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 protected] :/usr/src/pagespeed#

2 Configuración de PageSpeed

Para habilitar PageSpeed, abra /etc/nginx/nginx.conf...

vi /etc/nginx/nginx.conf

... y agregue las líneas pagespeed on; y velocidad de página FileCachePath /var/ngx_pagespeed_cache; antes de cualquier host virtual:

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

Cree el directorio de caché y vuelva a cargar nginx:

mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache

/etc/init.d/nginx reload

Carguemos una página y verifiquemos si PageSpeed ​​se menciona en el resultado:

curl -I -p http://localhost|grep X-Page-Speed

[email protected]:/usr/src/pagespeed# curl -I -p http://localhost|grep X-Page-Speed
  % Total    % Recibido % Xferd  Velocidad media   Tiempo    Tiempo     Tiempo Actual
                             D carga Subir   Total   Pasado    Velocidad izquierda
  0     0    0     0    0     0      0      0 -:--:-- --:--:-- --:--:--     0
X-Page- Velocidad: 1.7.30.3-3721
[correo electrónico protegido]:/usr/src/pagespeed#

Ahora podemos configurar PageSpeed ​​individualmente o cada vhost, p. así:

vi /etc/nginx/sites-available/example.com.vhost
[...]
        pagespeed on;
        pagespeed FileCachePath /var/ngx_pagespeed_cache;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
[...]

La línea importante es la línea Pagespeed EnableFilters que le dice a PageSpeed ​​qué filtros debe aplicar. Puede encontrar una lista de todos los filtros aquí:http://ngxpagespeed.com/ngx_pagespeed_example/

No olvide reiniciar nginx después:

/etc/init.d/nginx reload

Cuando abre una página ahora y echa un vistazo a los encabezados (por ejemplo, con el complemento de encabezados HTTP en vivo para FireFox), debería ver una línea de velocidad de página x:

Puede verificar las fuentes HTML de sus páginas para ver si los filtros de PageSpeed ​​funcionan como se esperaba.

3 Enlaces

  • Blog de desarrolladores de Google:http://googledevelopers.blogspot.nl/2013/04/speed-up-your-sites-with-pagespeed-for.html
  • ngx_pagespeed:https://developers.google.com/speed/pagespeed/ngx
  • Construir/usar PageSpeed:https://github.com/pagespeed/ngx_pagespeed
  • Ejemplos de filtros ngx_pagespeed:http://ngxpagespeed.com/ngx_pagespeed_example/

Sobre el autor

Falko Timme es el propietario de Timme Hosting (alojamiento web nginx ultrarrápido). Es el mantenedor principal de HowtoForge (desde 2005) y uno de los principales desarrolladores de ISPConfig (desde 2000). También ha contribuido al libro de O'Reilly "Administración del sistema Linux".


Debian
  1. Instale Nginx con ngx_pagespeed en CentOS 7

  2. Cómo compilar nginx con el módulo Google PageSpeed ​​en Debian 8 (Jessie)

  3. Instalar Habari con Nginx en Debian 8

  4. Instalar Plone con Nginx en un VPS Debian 8

  5. Cómo instalar WonderCMS con Nginx en Debian 11

Cómo instalar Nextcloud 10 con Nginx en Debian 8

Cómo configurar ModSecurity con Nginx en Debian/Ubuntu

Cómo habilitar el protocolo HTTP2 con Nginx en Debian 8 Jessie Server

Cómo instalar phpMyAdmin con Nginx en Debian 11 Bullseye

Cómo instalar phpMyAdmin con Nginx en Debian 11

Uso de RoundCube Webmail con ISPConfig 3 en Debian Wheezy (nginx)

    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;
      }
    [...]
    }