How to Install and Configure Nginx from Source on Linux?

In this tutorial, we will explore the process of installing and configuring Nginx from source on Linux. Nginx is a powerful and widely used web server and reverse proxy server that offers high performance, scalability, and flexibility. By installing Nginx from the source, we gain more control over the installation and can customize it to suit our specific needs.

Installing from source allows you to enable specific modules, optimize for your hardware, and use the latest features not available in package repositories. This approach is particularly useful for production environments requiring custom configurations.

Prerequisites

Before beginning the installation, ensure your system has the following dependencies installed ?

sudo apt-get update
sudo apt-get install build-essential libpcre3-dev libssl-dev zlib1g-dev

These packages provide essential compilation tools, PCRE for regular expressions, SSL support, and compression libraries that Nginx requires.

Obtaining the Nginx Source Code

To begin the installation process, we first need to obtain the source code for Nginx. Follow the steps below ?

  • Navigate to your preferred directory and download the latest stable version ?

wget http://nginx.org/download/nginx-1.24.0.tar.gz
  • Extract the source code using the following command ?

tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

Configuring the Build

The ./configure script allows you to customize the Nginx build with specific modules and paths. Here's a basic configuration with commonly used options ?

./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_gzip_static_module

This configuration sets standard paths and enables SSL, real IP detection, and static gzip compression modules. You can add more modules based on your requirements.

Compiling and Installing

Once configuration is complete, compile and install Nginx ?

make
sudo make install

The make command compiles the source code, while make install copies the binaries and configuration files to their designated locations.

Creating System Service

Create a systemd service file for easier management ?

sudo nano /etc/systemd/system/nginx.service

Add the following content ?

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=process
KillSignal=SIGQUIT
TimeoutStopSec=5
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Starting and Testing Nginx

Enable and start the Nginx service ?

sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

Test the installation by accessing your server's IP address in a web browser. You should see the default Nginx welcome page confirming successful installation.

Basic Configuration

The main configuration file is located at /etc/nginx/nginx.conf. Key configuration areas include ?

  • Worker Processes ? Set based on CPU cores for optimal performance

  • Server Blocks ? Configure virtual hosts for multiple websites

  • SSL/TLS ? Enable HTTPS with certificate configuration

  • Logging ? Customize access and error log formats

Conclusion

Installing Nginx from source provides complete control over your web server configuration and enables custom module integration. This method ensures you have the latest features and optimal performance tuning for your specific environment. Remember to regularly update your installation and monitor security advisories for the version you're running.

Updated on: 2026-03-17T09:01:39+05:30

720 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements