PageSpeed Beta ist für nginx verfügbar, das nginx-Äquivalent von mod_pagespeed für Apache. Dieses Modul wendet Best Practices für die Webleistung auf Seiten und zugehörige Assets (CSS, JavaScript, Bilder) an und beschleunigt daher Ihre Website und verkürzt die Ladezeiten. Dieses Tutorial erklärt, wie man PageSpeed mit nginx auf Debian Jessie/testing verwendet.
Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!
1 Erstellen von nginx mit PageSpeed
nginx unterstützt kein dynamisches Laden von Modulen, daher müssen wir es mit PageSpeed-Unterstützung neu erstellen. Wir werden nginx als .deb-Paket bauen, damit wir unsere bestehende nginx-Installation damit ersetzen können (oder es einfach auf anderen Systemen installieren können).
Erstellen Sie zuerst das Build-Verzeichnis:
cd /usr/src
mkdir Seitengeschwindigkeit &&cd Seitengeschwindigkeit
Stellen Sie sicher, dass Sie deb- und deb-src-Zeilen für Jessie/testing in /etc/apt/sources.list:
habenvi /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 [...] |
Aktualisieren Sie Ihre Paketliste und installieren Sie einige Voraussetzungen:
apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev
Laden Sie die Nginx-Quellen und die Build-Abhängigkeiten herunter:
apt-get source nginx
apt-get build-dep nginx
Sehen wir uns unsere nginx-Version an:
ls -l
[email protected]:/usr/src/pagespeed# ls -l
insgesamt 2292
drwxr-xr-x 10 root root 4096 Feb 5 12:54 nginx-1.4.4
-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 Jan 7 19:22 nginx_1 .4.4-4.dsc
-rw-r--r-- 1 root root 768217 Nov 21 16:28 nginx_1.4.4.orig.tar.gz
[email protected]:/usr/src /Seitengeschwindigkeit#
Unsere Nginx-Version ist 1.4.4. Gehen wir zum Verzeichnis debian/modules der heruntergeladenen nginx-Quellen ...
cd /usr/src/pagespeed/nginx-1.4.4/debian/modules
... und laden Sie die PageSpeed-Quellen herunter (Sie können auf dieser Seite nach der neuesten Version suchen:https://github.com/pagespeed/ngx_pagespeed/releases - in diesem Beispiel ist die Version 1.7.30.3-beta; wenn Ihre Version abweicht , stellen Sie sicher, dass Sie es im Rest dieses Tutorials ersetzen):
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
Bearbeiten wir die debian/rules-Datei:
vi /usr/src/pagespeed/nginx-1.4.4/debian/rules
In dieser Datei finden Sie vier config.status-Abschnitte (config.status.full, config.status.light, config.status.extras, config.status.naxsi). Fügen Sie die Zeile --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \ zu jedem von ihnen hinzu, direkt vor der Zeile $(CONFIGURE_OPTS)>[email protected], z. wie folgt:
[...] 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] [...] |
Lassen Sie uns jetzt unsere neuen nginx-Pakete erstellen:
cd /usr/src/pagespeed/nginx-1.4.4/ && dpkg-buildpackage -b
Schauen wir uns anschließend die generierten Pakete an:
cd /usr/src/pagespeed
ls -l
[email protected]:/usr/src/pagespeed# ls -l
insgesamt 67260
drwxr-xr-x 10 root root 4096 Feb 5 13:18 nginx-1.4.4
-rw -r--r-- 1 root root 67132 Feb 5 13:18 nginx_1.4.4-4_all.deb
-rw-r--r-- 1 root 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 Jan 7 19:22 nginx_1.4.4-4.dsc
-rw-r--r-- 1 root root 768217 Nov 21 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 5 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 root 25480472 Feb 5 13:19 nginx-extras-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 root root 2372314 Feb 5 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 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 5 13:18 nginx-naxsi-ui_1.4.4-4_all. deb
[email protected]:/usr/src/pagespeed#
Wir können jetzt nginx mit PageSpeed-Unterstützung wie folgt installieren:
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
Prüfen wir, ob das PageSpeed-Modul erfolgreich erstellt wurde:
nginx -V
Sie sollten das ngx_pagespeed-Modul in der Ausgabe sehen:
[email protected]:/usr/src/pagespeed# nginx -V
nginx-Version:nginx/1.4.4
TLS-SNI-Unterstützung aktiviert
Konfigurationsargumente:--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 protected] :/usr/src/pagespeed#
2 Konfigurieren von PageSpeed
Um PageSpeed zu aktivieren, öffnen Sie /etc/nginx/nginx.conf...
vi /etc/nginx/nginx.conf
... und fügen Sie die Zeilen pagespeed hinzu; und Pagespeed FileCachePath /var/ngx_pagespeed_cache; vor vhosts:
[...] pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; [...]ein |
Erstellen Sie das Cache-Verzeichnis und laden Sie nginx neu:
mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
/etc/init.d/nginx reload
Lassen Sie uns eine Seite laden und prüfen, ob PageSpeed in der Ausgabe erwähnt wird:
curl -I -p http://localhost|grep X-Page-Speed
[email protected]:/usr/src/pagespeed# curl -I -p http://localhost|grep X-Page-Speed
% Total % Empfangen % Xferd Durchschnittliche Geschwindigkeit Zeit Zeit Zeit Aktuell
Laden. Hochladen Gesamt Ausgaben Linke Geschwindigkeit
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
X-Page- Geschwindigkeit: 1.7.30.3-3721
[email protected]:/usr/src/pagespeed#
Jetzt können wir PageSpeed einzeln konfigurieren oder jeden vhost, z.B. so:
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; } [...] } |
Die wichtige Zeile ist die Zeile pagespeed EnableFilters, die PageSpeed mitteilt, welche Filter angewendet werden sollen. Eine Liste aller Filter finden Sie hier:http://ngxpagespeed.com/ngx_pagespeed_example/
Vergessen Sie nicht, nginx danach neu zu starten:
/etc/init.d/nginx reload
Wenn Sie jetzt eine Seite öffnen und sich die Header ansehen (z. B. mit dem Live-HTTP-Header-Add-on für FireFox), sollten Sie eine X-Page-Speed-Zeile sehen:
Sie können die HTML-Quellen Ihrer Seiten überprüfen, um festzustellen, ob die PageSpeed-Filter wie erwartet funktionieren.
3 Links
- Blog der Google-Entwickler:http://googledevelopers.blogspot.nl/2013/04/speed-up-your-sites-with-pagespeed-for.html
- ngx_pagespeed:https://developers.google.com/speed/pagespeed/ngx
- Erstellen/Verwenden von PageSpeed:https://github.com/pagespeed/ngx_pagespeed
- Beispiele für ngx_pagespeed-Filter:http://ngxpagespeed.com/ngx_pagespeed_example/
Über den Autor

Falko Timme ist Der Besitzer von Timme Hosting (ultraschnelles Nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Kernentwickler von ISPConfig (seit 2000). Er hat auch zum O'Reilly-Buch "Linux System Administration" beigetragen.