PageSpeed Beta je k dispozici pro nginx, ekvivalent nginx mod_pagespeed pro Apache. Tento modul aplikuje osvědčené postupy pro výkon webu na stránky a související aktiva (CSS, JavaScript, obrázky), a proto zrychluje váš web a zkracuje dobu načítání. Tento tutoriál vysvětluje, jak používat PageSpeed s nginx na Debian Jessie/testing.
Neposkytuji žádnou záruku, že to pro vás bude fungovat!
1 Vytváření nginx pomocí PageSpeed
nginx nepodporuje dynamické načítání modulů, proto jej musíme přebudovat s podporou PageSpeed. Vytvoříme nginx jako balíček .deb, abychom jím mohli nahradit naši stávající instalaci nginx (nebo ji snadno nainstalovat na jiné systémy).
Nejprve vytvořte adresář sestavení:
cd /usr/src
rychlost stránky mkdir &&rychlost stránky cd
Ujistěte se, že máte řádky deb a deb-src pro Jessie/testing v /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 [...] |
Aktualizujte svůj seznam balíčků a nainstalujte některé předpoklady:
apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev
Stáhněte si zdroje nginx a závislosti sestavení:
apt-get source nginx
apt-get build-dep nginx
Pojďme se podívat na naši verzi nginx:
ls -l
[chráněno e-mailem]:/usr/src/pagespeed# ls -l
celkem 2292
drwxr-xr-x 10 kořen 4096 5. února 5 12:54 nginx-1.4.4
-rw -r--r-- 1 kořen 1568452 7. ledna 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 kořen kořen 2171 2. ledna 27 inx19:.4.4-4.dsc
-rw-r--r-- 1 kořenový kořen 768217 21. listopadu 16:28 nginx_1.4.4.orig.tar.gz
[e-mail chráněný]:/usr/src /pagespeed#
Naše verze nginx je 1.4.4. Pojďme do adresáře debian/modules stažených zdrojů nginx...
cd /usr/src/pagespeed/nginx-1.4.4/debian/modules
... a stáhněte si zdroje PageSpeed (nejnovější vydání můžete zkontrolovat na této stránce:https://github.com/pagespeed/ngx_pagespeed/releases – v tomto příkladu je verze 1.7.30.3-beta; pokud se vaše verze liší , nezapomeňte jej nahradit ve zbytku tohoto kurzu):
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
Upravme soubor debian/rules:
vi /usr/src/pagespeed/nginx-1.4.4/debian/rules
V tomto souboru najdete čtyři sekce config.status (config.status.full, config.status.light, config.status.extras, config.status.naxsi). Přidejte řádek --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \ ke každému z nich přímo před řádek $(CONFIGURE_OPTS)>[email protected], např. takto:
[...] 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] [...] |
Nyní pojďme vytvořit naše nové balíčky nginx:
cd /usr/src/pagespeed/nginx-1.4.4/ && dpkg-buildpackage -b
Poté se podívejme na vygenerované balíčky:
cd /usr/src/pagespeed
ls -l
[e-mail chráněný]:/usr/src/pagespeed# ls -l
celkem 67260
drwxr-xr-x 10 kořenový kořen 4096 5. února 13:18 nginx-1.4.4
-rw -r--r-- 1 kořenový kořen 67132 5. února 5 13:18 nginx_1.4.4-4_all.deb
-rw-r--r-- 1 kořenový kořen 4749 4. února 45 am 13:1 .changes
-rw-r--r-- 1 kořenový kořen 1568452 7. ledna 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 kořen kořen 2171 Jan 7 19:22 nginx_1.4.4-4.dsc
-rw-r--r-- 1 kořen kořen 768217 21. listopadu 16:28 nginx_1.4.4.orig. rw-r--r-- 1 kořen 79288 5. února 13:18 nginx-common_1.4.4-4_all.deb
-rw-r--r-- 1 kořen in 5 5 13. února doc_1.4.4-4_all.deb
-rw-r--r-- 1 kořenový kořen 2520834 5. února 5 13:19 nginx-extras_1.4.4-4_amd64.deb
-rw-r--r- - 1 kořen 25480472 Únor 5 13:19 nginx-extras-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 kořen 4 2372314 3. 4. 4. 4. 4. 3. 1. 4. 4. 4. 1_1 .deb
-rw-r--r-- 1 kořenový kořen 23850670 5. února 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 _1. 45. února 4db -4_amd64.deb
-rw-r--r-- 1 kořenový kořen 2384044 5. února 13:19 nginx-naxsi_1.4.4-4_amd64.deb
-rw-r--r-- 1 ro root 3581602 Únor 5 13:19 nginx-naxsi-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 kořen kořen 309478 Únor 5 5 13:18-18.4.4. deb
[e-mail chráněný]:/usr/src/pagespeed#
Nyní můžeme nainstalovat nginx s podporou PageSpeed následovně:
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
Pojďme zkontrolovat, zda byl modul PageSpeed sestaven úspěšně:
nginx -V
Ve výstupu byste měli vidět modul ngx_pagespeed:
[e-mail chráněný]:/usr/src/pagespeed# nginx -V
verze nginx:nginx/1.4.4
Podpora TLS SNI povolena
konfigurace argumentů:--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 -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
[chráněno e-mailem] :/usr/src/pagespeed#
2 Konfigurace PageSpeed
Chcete-li povolit PageSpeed, otevřete /etc/nginx/nginx.conf...
vi /etc/nginx/nginx.conf
... a přidejte rychlost stránky řádků; a rychlost stránky FileCachePath /var/ngx_pagespeed_cache; před libovolnými vhosty:
[...] pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; [...] |
Vytvořte adresář mezipaměti a znovu načtěte nginx:
mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
/etc/init.d/nginx reload
Pojďme načíst stránku a zkontrolovat, zda je ve výstupu zmíněna PageSpeed:
curl -I -p http://localhost|grep X-Page-Speed
[e-mail protected]:/usr/src/pagespeed# curl -I -p http://localhost|grep X-Page-Speed
% Celkem % Přijato % Xferd Průměrná rychlost Doba Nahrávání Celkem Utracená Doleva Rychlost
0 0 0 0 0 0 0 0 --:--:-- ---:--:-- - - - :- - - - - - :Rychlost: 1.7.30.3-3721
[e-mail chráněno]:/usr/src/pagespeed#
Nyní můžeme konfigurovat PageSpeed jednotlivě nebo každý vhost, např. takhle:
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; } [...] } |
Důležitým řádkem je řádek Pagespeed EnableFilters, který říká PageSpeed, které filtry má použít. Seznam všech filtrů naleznete zde:http://ngxpagespeed.com/ngx_pagespeed_example/
Poté nezapomeňte restartovat nginx:
/etc/init.d/nginx reload
Když nyní otevřete stránku a podíváte se na záhlaví (např. pomocí doplňku Live HTTP headers pro FireFox), měli byste vidět řádek rychlosti x stránky:
Můžete zkontrolovat zdroje HTML svých stránek a zjistit, zda filtry PageSpeed fungují podle očekávání.
3 odkazy
- Blog Google Developers:http://googledevelopers.blogspot.nl/2013/04/speed-up-your-sites-with-pagespeed-for.html
- ngx_pagespeed:https://developers.google.com/speed/pagespeed/ngx
- Vytváření/použití PageSpeed:https://github.com/pagespeed/ngx_pagespeed
- Příklady filtru ngx_pagespeed:http://ngxpagespeed.com/ngx_pagespeed_example/
O autorovi
Falko Timme je vlastníkem Timme Hosting (ultrarychlý webhosting nginx). Je hlavním správcem HowtoForge (od roku 2005) a jedním z hlavních vývojářů ISPConfig (od roku 2000). Přispěl také do O'Reillyho knihy „Linux System Administration“.