Linux Tactic

Mastering Nginx Configuration and Security on Ubuntu 1604

Guide to Installing and Configuring Nginx on Ubuntu 16.04

Are you tired of using Apache and want to try out Nginx – the high-performance, lightweight web server? This guide will walk you through the process of installing and configuring Nginx on Ubuntu 16.04.

We will cover the prerequisites, installation, firewall configuration, and testing of Nginx. Additionally, for those who want to install the latest Nginx version, we will show you how to add Nginx PPA repository and install it.

Let’s get started!


First, make sure you have sudo privileges on your Ubuntu server. This is needed to run administrative commands.

If you are currently using Apache, you need to stop the service and prevent it from starting up at boot. This is because Apache uses port 80 and 443, which Nginx also uses.

You can disable Apache by running the following command:

“`sudo systemctl stop apache2“`

Next, disable Apache service at boot:

“`sudo systemctl disable apache2“`


Now lets install Nginx. Ubuntus default software repository has Nginx packages that we can use for installation.

To proceed with the installation, run the following commands in the terminal:

“`sudo apt update“`

“`sudo apt install nginx“`

Once the installation is done, Nginx will start automatically, listening on port 80. You can verify whether Nginx is running by visiting your servers IP address in a web browser.

You should see the default Nginx welcome page.

Firewall Configuration

Its important to set up a firewall to secure your server. Ubuntu comes with UFW (Uncomplicated Firewall) installed by default.

To configure UFW for Nginx, run the following commands:

“`sudo ufw allow ‘Nginx Full’“`

“`sudo ufw enable“`

This will enable the firewall with the default rules. The rule we added allows HTTP and HTTPS traffic to flow to and from Nginx.


To test whether Nginx is working correctly, visit your servers IP address in a browser once again. You should see the default Nginx welcome page.

If youve installed SSL certificates for your site, you can try visiting it via HTTPS.

Install Latest Nginx Version from Nginx PPA Repository

If you wish to get the latest Nginx version, you can add Nginx PPA repository and install it. Follow the steps below:

Step 1: Install software-properties-common package:

This package is used to add repositories to Ubuntu.

Run the following command to install it:

“`sudo apt install software-properties-common“`

Step 2: Add Nginx PPA Repository:

Run the following command to add the Nginx PPA repository:

“`sudo add-apt-repository ppa:nginx/stable“`

Step 3: Update Package List and Install Nginx:

To update the package list and install Nginx, run the following commands:

“`sudo apt update“`

“`sudo apt install nginx“`

Step 4: Check Nginx Version:

To verify the version of Nginx installed on your system, run the following command:

“`sudo nginx -v“`

This will show you the current version of Nginx installed on your Ubuntu system.


Thats it! Youve successfully installed and configured Nginx in Ubuntu 16.04. By following the steps outlined in this guide, you can now serve web pages using this high-performance web server.

Whether youre using Ubuntu for personal or commercial use, installing Nginx can help you achieve faster and more efficient web serving.

Managing Nginx Service with Systemctl

Systemd is a popular init system used by many modern Linux distributions. It allows for centralized management of system services and provides a simple yet powerful way to control the services on your server.

Nginx can also be managed using the systemctl command, which is part of the systemd unit. Heres how to manage Nginx using systemctl:

To start Nginx service:

“`sudo systemctl start nginx“`

To stop Nginx service:

“`sudo systemctl stop nginx“`

To restart Nginx service:

“`sudo systemctl restart nginx“`

To check the status of Nginx service:

“`sudo systemctl status nginx“`

This will display information about the current running status and other details about Nginx.

Nginx Configuration Files Structure and Best Practices

Nginx uses a main configuration file located at /etc/nginx/nginx.conf that may include additional configuration files. Its best to split the configuration into smaller files, rather than having the entire config in one large file.

Main Configuration File

The main configuration file contains directives that describe the behavior of Nginx. It includes information about worker processes, events, and connections.

It also includes information about the location of webroot, access log and error log files. The main configuration file should be structured in a clear and organized manner, with comments and clear naming conventions.

Domain-Specific Configuration File

Domain-specific configuration files are server block files that contain directives specific to a virtual host or domain. These files are usually located in /etc/nginx/sites-available and are enabled by linking them to the /etc/nginx/sites-enabled directory.

You can create a separate file for each domain you want to host on your server. They should include server_name, listen directives, and configuration for SSL if needed.

Configuration Snippets

Configuration snippets are used to reuse common configuration blocks in server blocks or across server block files. These files are usually kept in /etc/nginx/snippets directory.

By including these snippets in your configurations, you can easily reuse configuration information for different parts of your site.

Log Files

Nginx can generate two types of log files: access.log and error.log. The access.log file includes information about requests to the server, while the error.log file contains information on server errors and warnings.

These log files are generally located in the /var/log/nginx/ directory and can be used for debugging purposes. Its good practice to regularly check and rotate log files to prevent them from consuming too much server space.

Document Root Directory

The document root directory is the location where website files are stored. Its also the location where Nginx will look for files when serving web pages.

By default, Nginx will serve pages from the /var/www/html directory. However, you can change this to any other directory you want by modifying the root directive.

In conclusion, understanding Nginx configuration file structure and best practices is essential for managing an efficient and secure web server. By following these best practices, you can ensure that your server runs smoothly, is easy to maintain, and is secure from attacks.

Lets Encrypt SSL Certificate

Lets Encrypt is a free Certificate Authority that provides SSL certificates to enable HTTPS encryption on your website. With an SSL certificate, you can secure your website and protect your users data from being intercepted or tampered with.

Heres how you can obtain and install a Lets Encrypt SSL certificate for your Nginx server:

Step 1: Install the Certbot Tool

Certbot is an automatic tool designed to obtain and install SSL/TLS certificates from Lets Encrypt. Lets start by installing Certbot on our server.

“`sudo apt-get install certbot python3-certbot-nginx“`

This command will install Certbot and a Certbot plugin for Nginx. Step 2: Obtaining the SSL Certificate

Once you have installed Certbot, you can obtain a free SSL certificate for your domain(s) by running the following command:

“`sudo certbot –nginx“`

This command will run Certbot in automatic mode, detect the Nginx server block files that correspond to your domain(s), modify them to enable HTTPS, and create/renew Lets Encrypt certificates for them.

Note: During the installation process, Certbot will prompt you to provide an email address for renewal notifications. Make sure this email is valid and working, as renewal notifications are essential to keeping your SSL certificate valid.

Step 3:

Testing HTTPS

After Certbot has successfully obtained and installed the SSL certificate, you can test whether HTTPS is working on your site by visiting your site using HTTPS:


If everything is working, your browser should display a green padlock icon in the address bar, indicating that the site is secure. Step 4: Configuring Automatic Renewals

Lets Encrypt SSL certificates are valid for 90 days, after which they need to be renewed.

Certbot will automatically handle this for you if you configure automatic renewals. To do this, run the following command:

“`sudo certbot renew –dry-run“`

This command will test the automatic renewals process and ensure that everything is working correctly.

You can also run the command without the `–dry-run` flag to renew the certificates automatically.


In conclusion, securing your website with an SSL certificate is essential to protect sensitive data from unauthorized access and ensure the integrity of data transmitted over the web. Lets Encrypt provides a simple and free way to obtain SSL certificates for your website.

By following the steps outlined in this guide, you can easily switch your Nginx server to support HTTPS and protect your website users from any potential data breaches. So why not secure your website today with a Lets Encrypt SSL certificate?

In this article, we have covered various aspects of installing and configuring Nginx on Ubuntu 16.04. We began by discussing the prerequisites and installation of Nginx, followed by firewall configuration and testing.

We also explained how to manage Nginx with Systemctl. Additionally, we provided information about the structure and best practices for Nginx configuration files, which include the main configuration file, domain-specific configuration files, configuration snippets, log files, and document root directory.

Finally, we emphasized the importance of securing your website with an SSL certificate and explained how to obtain and install a Lets Encrypt SSL certificate. Overall, understanding Nginx configuration and security practices is essential for a stable and secure web server.

By following these practices, you can ensure that your server runs efficiently and is secure from attacks.

Popular Posts