PageSpeed Module from Google, available for Apache and nginx, is a quick solution to improve web application network performance. As a bonus, if we configure nginx as a proxy server, then it can also serve as a web acceleration solution.
There is a growing number of PageSpeed optimization filters, anything from a straightforward CSS minification to a sophisticated images recompression. If you are already using Apache or nginx, PageSpeed module is relatively easy to use.
A different use case for PageSpeed is as a proxy server which you use for your daily browsing, e.g. what @jedisct1 has implemented via Apache proxy module. In this blog post, I show an alternative setup by using nginx instead, mainly by following the steps described in the ngx_pagespeed project.
For this experiment, the virtual machine is based on Ubuntu 12.04 LTS (Precise Pangolin) 64-bit. If you tweak the configuration inside
Vagrantfile to a CentOS-based Vagrant box, e.g. from Opscode Bento
collection, it should also work just fine. Should you rather trust your
own virtual machine, you can create a Vagrant box from scratch
automatically, check out my previous blog post on Using Packer to Create Vagrant Boxes.
The provisioning script of the box takes care the step of downloading the latest nginx
and compile it with Google’s PageSpeed module. When it is ready, the
script will also launch nginx as a forward proxy at port 8000 (this port
is also forwarded
and hence the proxy is available for the host machine as well). The
To verify the operation of the optimizing proxy, run these two commands (on the host machine) and observe the different outcomes:
curl http://ariya.github.io/js/random/index.html curl -x localhost:8000 http://ariya.github.io/js/random/index.html
The second one pipes the original HTML content through the enabled optimization filters, comment removal and script rewrite, and thereby it will result in a smaller page. This is definitely just an illustration, feel free to play with a number of other PageSpeed filters and observe the impacts.
Obviously, it is also possible to setup your web browser to use the proxy at localhost:8000. When looking at the same URL given above, it will result in something like the following screenshot. Again, compare it with the case where you view the page without using the proxy.
For a more practical usage of the proxy, stay tuned!