How To Speed Up Nginx on CentOS
Introduction
This tutorial will teach you how to optimize a website that is being hosted with Nginx. We'll be doing the following:
- Removing Nginx.
- Recompiling Nginx with SPDY3, OpenSSL, and Gzip.
- Installing any 3rd party modules needed.
Steps in this tutorial have been tested on both CentOS 6 and 7. In addition, both 32-bit and 64-bit architectures were tested working.
Prerequisites
Let's get started with the removal of Nginx. Also, we'll need to have OpenSSL and a few dependencies installed before we compile Nginx again.
Step 1: Backup old configuration and data
cd ~
mkdir nginx
cp -r /etc/nginx ~/nginx
Step 2: Remove Nginx
yum remove nginx
Step 3: Install OpenSSL and its dependencies
yum install zlib-devel pcre-devel openssl libssl-devel make gcc gcc-c++ -y
Compile Nginx
Now that we're done with the removal of Nginx, we can compile it from source.
Step 1: Use wget
to retrieve the Nginx source code
cd ~
wget https://nginx.org/download/nginx-1.8.0.tar.gz
Step 2: Extract the tarball
tar -xvf nginx-1.8.0.tar.gz
Step 3: Build and install Nginx
cd ~/nginx-1.8.0
./configure --with-http_spdy_module --with-http_ssl_module --with-http_gzip_static_module
make install
Step 4: Setup Nginx as a service
We will use a third-party script from GitHub for the init.d
service.
cd /etc/init.d
wget https://gist.githubusercontent.com/sairam/5892520/raw/b8195a71e944d46271c8a49f2717f70bcd04bf1a/nginx
chmod +x nginx
Step 5: Configure Nginx
At this point, you can move your old configuration back to the /etc/nginx
folder.
Start Nginx.
service nginx start
Begin editing the Nginx configuration.
vi /etc/nginx/nginx.conf
Within the "http" block, add the following:
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css text/JavaScript;
Exit and save the file by hitting the escape key, proceeded with typing :wq
, then hitting enter.
Reload Nginx. This is known as a soft restart.
service nginx reload
Conclusion
Congratulations! You have now compiled and optimized Nginx. Going forward, you should see a performance gain in page loads on your website.
Note that adding more modules to Nginx is not possible after it has been compiled. See the bonus section below for information about adding modules.
Optional: Install additional modules
To add modules to Nginx, you will have to repeat the compile process from this tutorial. Start by removing Nginx again. When you get to the step starting with ./configure ...
, you can add modules with this syntax:
--add-module=/<module location>
This argument can be repeated if you have more than one module.