How to Set Up Nginx Server Blocks (Virtual Hosts) on Ubuntu 20.04

0 0

At times, you may need to host more than one domain or website on your Nginx web server. For that to happen, a Server Block (Virtual Hosts) needs to be configured to encapsulate all of your domain’s configuration. Nginx server blocks are synonymous with Apache virtual host files and serve the same purpose.

This topic demonstrates how to set up an Nginx server block on Ubuntu 20.04.


  • An A record defined on your domain name hosting provider. An A record is a DNS record that points the domain name to the Public server IP address. For this guide, we will use the domain name for illustration purposes.
  • An Nginx Server or LEMP Stack installed on Ubuntu 20.04 LTS instance.
  • A login user with Sudo privileges.

With all the requirements met, let’s explore how you can set up an Nginx server block in Ubuntu.

Step 1: Create an Nginx Document Root Directory

To get started, we will create a separate directory for our domain that will contain all the settings related to the domain.

$ sudo mkdir -p /var/www/

Next, assign the directory’s ownership using the $USER environment variable. This assigns the directory’s ownership to the currently logged in user. Ensure that you are logged in using a regular user’s account and not as root.

$ sudo chown -R $USER:$USER /var/www/

Next, assign the appropriate permissions to the directory, granting the logged-in user all the rights (read, write and execute) and the group and other users read and execute permissions only.

$ sudo chmod -R 755 /var/www/

With the directory permissions and ownership correctly configured, we need to create a sample web page for the domain.

Step 2: Create a Sample Page for the Domain

In this step, we are going to create an index.html file for testing purposes. This file will serve content that will be displayed on the web browser when the domain is called on the browser.

$ sudo vim /var/www/

Paste the following HTML content.

        Welcome to your_domain!

Bravo! Your server block is working as expected!

Save and exit the configuration file.

Step 3: Create an Nginx Server Block in Ubuntu

Nginx server blocks are located in the /etc/nginx/sites-available directory. The default Nginx server block is /etc/nginx/sites-available/default which serves the default HTML file at /var/www/html/index.nginx-debian.html.

For our case, we need to create a server block that will serve the content in the index.html file that we created earlier.

So, create the server block file shown.

$ sudo vim /etc/nginx/sites-available/

Paste the content below:

server {
        listen 80;
        listen [::]:80;

        root /var/www/;
        index index.html index.htm index.nginx-debian.html;


        location / {
                try_files $uri $uri/ =404;

    access_log /var/log/nginx/;
    error_log /var/log/nginx/;

Create Nginx Server Block in Ubuntu

Save and exit the file.

Step 4: Enable Nginx Server Block in Ubuntu

To enable the Nginx server block, you need to symlink it to the /etc/nginx/sites-enabled/ directory as shown.

$ sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

At this point, we are pretty much done. However, it’s prudent to confirm that all the configurations are in order. To do so, execute the command:

$ sudo nginx -t

If you followed our steps correctly, you should get the output shown:

Check Nginx Configuration File
Check Nginx Configuration File

Finally, restart Nginx for the changes made to the configuration files to take effect.

$ sudo systemctl restart Nginx

Then confirm if Nginx is running by running the command shown:

$ sudo systemctl status Nginx
Check Nginx Service Status
Check Nginx Service Status

Step 5: Testing the Nginx Server Block in Ubuntu

To confirm whether the server block is working as expected and is serving content in the /var/www/ directory, open your web browser and browse your server’s domain name:


You should get content contained in the HTML file in your server block as shown.

Check Nginx Server Block
Check Nginx Server Block

In this guide, we have shown you how to set up an Nginx server block using a single domain on Ubuntu Linux. You can repeat the same steps for different domains and still achieve the same results. We do hope that the guide was insightful.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.