Skip to content
Rezha Julio
Go back

How to Build Nginx with Google Pagespeed Support

4 min read

Nginx (engine-x) is an open source and high-performance HTTP server, reverse proxy and IMAP/POP3 proxy server. The outstanding features of Nginx are stability, a rich feature set, simple configuration and low memory consumption. This tutorial shows how to build a Nginx .deb package for Ubuntu 16.04 from source that has Google PageSpeed module compiled in.

PageSpeed is a web server module developed by Google to speed up the website response time, optimize the returned HTML and reduce the page load time. ngx_pagespeed features including:

see more https://developers.google.com/speed/pagespeed/module/.

Install the build dependencies

Terminal window
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

Installing nginx with ngx_pagespeed

Step 1 - Add the nginx repository

Create a new repository file /etc/apt/sources.list.d/nginx.list with you favourite editor.

Terminal window
nano /etc/apt/sources.list.d/nginx.list

There you add the lines: Save the file and exit the editor.

Terminal window
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

Add the key and update the repository:

Terminal window
sudo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62
sudo apt-get update

Step 2 - Download nginx 1.12 from ubuntu repository

Create a new directory for the nginx source files and download the nginx sources with apt:

Terminal window
cd ~
mkdir -p ~/compile/nginx_source/
cd ~/compile/nginx_source/
apt-get source nginx

Sometimes, there is an error: ‘packages cannot be authenticated’. You can solve it by typing command below:

Terminal window
rm -rf /var/lib/apt/lists/
apt-get update

Next, install all dependencies to build the nginx package.

Terminal window
apt-get build-dep nginx

Step 3 - Download Pagespeed

Create a new directory for PageSpeed and download the PageSpeed source. In this tutorial, we will use pagespeed 1.11.33.4 (latest stable one)

Terminal window
mkdir -p ~/compile/ngx_pagespeed/
cd ~/compile/ngx_pagespeed/
export ngx_version=1.11.33.4
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}.zip
unzip release-${ngx_version}.zip
cd ngx_pagespeed-release-${ngx_version}/
wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz
tar -xf ${ngx_version}.tar.gz

Step 4 - Configure nginx to build with Pagespeed

Go to the ‘nginx_source’ directory and edit the ‘rules’ file.

Terminal window
cd ~/compile/nginx_source/nginx-1.12.0-1/debian/
vim rules

Add this parameter under config.status.nginx and config.status.nginx_debug:

Terminal window
--add-module=~/compile/ngx_pagespeed/ngx_pagespeed-release-1.11.33.3-beta

Save and exit.

Step 5 - Build the nginx Ubuntu package and install it

Go to the nginx source directory and build nginx from source with the dpkg-buildpackage command:

Terminal window
cd ~/compile/nginx_source/nginx-1.12.0-1/
dpkg-buildpackage -b

The nginx Ubuntu package will be saved under ~/compile/nginx_source/. Once package building is complete, please look in the directory:

Terminal window
cd ~/compile/nginx_source/
ls

The Nginx Ubuntu package has been built. And install nginx and modules deb with dpkg command.

Terminal window
dpkg -i *.deb

Testing

Step 1 - Testing with the Nginx Command

Run nginx -V to check that the ngx_pagespeed module has been built into nginx.

Step 2 - Testing with Curl Command

Go to nginx configuration directory and edit default virtual host configuration file.

Terminal window
cd /etc/nginx/
nano nginx.conf

Paste configuration below to enable ngx_pagespeed.

pagespeed on;
# Needs to exist and be writable by nginx. Use tmpfs for best performance.
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# 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 ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

Save and exit. Next, test the nginx configuration file and make sure there is no error:

Terminal window
nginx -t

Restart nginx:

Terminal window
systemctl restart nginx

Finally, access the nginx web server with the curl command:

Terminal window
curl -I your-ip-address

Related Posts


Previous Post
Yield Keyword
Next Post
What are Generators?