Compiling NGINX From Source [NGINX-Copied]


These directions are way out of date. Do not use these! I have since switched to a different process or tool since writing this particular article, but keeping it up for posterities sake, until I can properly replace it.

What have I changed to you ask? Anything building I’ve tried switching over to Ansible to handle in a much more programatic way. Others might be tools that I just don’t use at all anymore, due to changing DNS hosts.

The way listed here uses apt-get to our advantage. By adding the NGINX PPA repo, we get a baseline of required files, configuration files, and other things that make this much easier for us all!


For the $nginx variable at the end of the first code line, replace it with either stable for their Stable line or development for their Mainline.


Mainline is what they consider their “beta” line. Stable being their, well, “stable” line.

sudo add-apt-repository ppa:nginx/$nginx

Then, go in and remove the comment from the deb-src line inside the apt/sources.list.d/nginx.list file. The file most likely will be named something else.

Then update apt-get.

sudo apt-get update

Download Source Packages


First, we install the pre-requisites. AKA the package creation tools. This helps in building from source using apt.

sudo apt-get install dpkg-dev -y

Build Directory

The directory /opt/rebuildnginx is simply a potential, central location for all of the building files that we are wanting to use. You can stick it anywhere you want, name it anything you want.

sudo mkdir /opt/rebuildnginx
cd /opt/rebuildnginx

Source Files Download

Next, running apt-get source rather than apt-get install installs the source files for the program you’ve listed.

sudo apt-get source nginx

Install Build Dependencies

sudo apt-get build-dep nginx

If the current, main NGINX build doesn’t have the specific modules that you are needing, you can add them into a specific file inside the build directory.

The detailed instructions for that specialized need is at

Compile and Install

cd /opt/rebuildnginx/nginx-{release}
sudo dpkg-buildpackage -uc -b

This will take around a few minutes.

Install NGINX

Once the build is complete, we’ll find a bunch of .deb files added in /opt/rebuildnginx. We can use these to install NGINX.

The full package, quite aptly, has the most pre-built modules. So, if thats what you’re needing, concentrate on those files.

Next, you’ll want to check if you’re on 64bit or otherwise. If you’re on 64bit, most likely you wanna use amd64 files. Also, the dbg is specifically for debugging tools.

Do you have the file you wanna use? Lets install it then!

sudo dpkg --install nginx-full_{ release }+trusty0_amd64.deb

Now, you can run nginx -V (capital V) and it’ll show you the flags and modules and whatnot compiled with NGINX.

Block NGINX from Auto-Update

Next, mark NGINX to be blocked from further apt-get updates, as this potentially will remove the modules you added.

sudo dpkg --get-selections | grep nginx

and for every nginx component listed run:

sudo apt-mark hold {component}

And from now on, make sure to watch NGINXs opensource web page for more updates, and perform the same steps again.


These instructions are happily borrowed from