How to Install Nginx on Ubuntu 20.04
3 min read
Nginx pronounced “engine x” is an open-source, high-performance HTTP and reverse proxy server responsible for handling the load of some of the largest sites on the Internet. It can be used as a standalone web server, load balancer, content cache, and reverse proxy for HTTP and non-HTTP servers.
Compared to Apache, Nginx can handle a much large number of concurrent connections and has a smaller memory footprint per connection.
This tutorial describes how to install and manage Nginx on Ubuntu 20.04.
Before continuing, make sure you are logged in as a user with sudo privileges, and you don’t have Apache or any other process running on port 80 or 443.
Nginx is available in the default Ubuntu repositories. To install it run the following commands:
sudo apt update
sudo apt install nginx
Once the installation is completed, the Nginx service will start automatically. You can verify it by running:
sudo systemctl status nginx
The output will look something like this:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-05-02 20:25:43 UTC; 13s ago ...
That’s it. Nginx has been installed on your Ubuntu machine. You can manage the Nginx service in the same way as any other systemd unit.
Now that you have Nginx installed and running on your server, you need to make sure your firewall is configured to allow traffic on HTTP (
80) and HTTPS (
443) ports. Assuming you are using
UFW, you can do that by enabling the ‘Nginx Full’ profile which includes rules for both ports:
sudo ufw allow 'Nginx Full'
To verify the status type:
sudo ufw status
The output will look something like the following:
Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere Nginx Full ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
Test the Installation
To test your new Nginx installation, open
http://YOUR_IP in your browser of choice, and you should see the default Nginx landing page as shown on the image below:
Nginx Configuration File’s Structure and Best Practices
- All Nginx configuration files are located in the
- The main Nginx configuration file is
- To make Nginx configuration easier to maintain, it is recommended to create a separate configuration file for each domain. You can have as many server block files as you need.
- Nginx server block files are stored in
/etc/nginx/sites-availabledirectory. The configuration files found in this directory are not used by Nginx unless they are linked to the
- To activate a server block, you need to create a symlink (a pointer) from the configuration file sites in a
sites-availabledirectory to the
- It is recommended to follow the standard naming convention. For example, if your domain name is
mydomain.comthen your configuration file should be named
/etc/nginx/snippetsdirectory contains configuration snippets that can be included in the server block files. If you use repeatable configuration segments, then you can refactor those segments into snippets and include the snippet file to the server blocks.
- Nginx log files (
error.log) are located in the
/var/log/nginxdirectory. It is recommended to have a different
errorlog files for each server block.
- You can set your domain document root directory to any location you want. The most common locations for webroot include:
We’ve shown you how to install Nginx on Ubuntu 20.04. You can now start deploying your applications and use Nginx as a web or proxy server.
If you have any questions or feedback, feel free to leave a comment.