Select Page


Nginx is among the hottest internet servers on the planet and is chargeable for webhosting one of the most greatest and highest-traffic websites on the net. It’s extra resource-friendly than Apache generally and can be utilized as a internet server or opposite proxy.

On this information, we will provide an explanation for find out how to set up Nginx for your Ubuntu 18.04 server. For a extra detailed model of this instructional, please discuss with How To Install Nginx on Ubuntu 18.04.


Earlier than you start this information, you will have the next:

  • An Ubuntu 18.04 server and a standard, non-root consumer with sudo privileges. Moreover, it is very important allow a fundamental firewall to dam non-essential ports. You’ll be able to learn to configure a standard consumer account and arrange a firewall by means of following our initial server setup guide for Ubuntu 18.04.

You probably have an account out there, log in as your non-root consumer to start.

Step 1 – Putting in Nginx

As a result of Nginx is out there in Ubuntu’s default repositories, you’ll set up it the use of the apt packaging device.

Replace your native bundle index:

Set up Nginx:

Step 2 – Adjusting the Firewall

Take a look at the out there ufw software profiles:


To be had packages: Nginx Complete Nginx HTTP Nginx HTTPS OpenSSH

Let’s allow essentially the most restrictive profile that can nonetheless permit the site visitors you might have configured, allowing site visitors on port 80:

  • sudo ufw permit 'Nginx HTTP'

Examine the trade:


Standing: lively To Motion From -- ------ ---- OpenSSH ALLOW Anyplace Nginx HTTP ALLOW Anyplace OpenSSH (v6) ALLOW Anyplace (v6) Nginx HTTP (v6) ALLOW Anyplace (v6)

Step 3 – Checking your Internet Server

Take a look at with the systemd init device to ensure the carrier is working by means of typing:


● nginx.carrier - A prime efficiency internet server and a opposite proxy server Loaded: loaded (/lib/systemd/device/nginx.carrier; enabled; supplier preset: enabled) Lively: lively (working) since Fri 2018-04-20 16:08:19 UTC; Three days in the past Doctors: guy:nginx(8) Primary PID: 2369 (nginx) Duties: 2 (prohibit: 1153) CGroup: /device.slice/nginx.carrier ├─2369 nginx: grasp procedure /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: employee procedure

Get right of entry to the default Nginx touchdown web page to verify that the device is working correctly thru your IP cope with:


You will have to see the default Nginx touchdown web page:

Nginx default page

When the use of the Nginx internet server, you’ll use server blocks (very similar to digital hosts in Apache) to encapsulate configuration main points and host a couple of area from a unmarried server. We will be able to arrange a website known as, however you will have to change this with your individual area title. To be told extra about putting in a website title with DigitalOcean, see our introduction to DigitalOcean DNS.

Create the listing for, the use of the -p flag to create any vital guardian directories:

  • sudo mkdir -p /var/www/

Assign possession of the listing:

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

The permissions of your internet roots will have to be proper if you have not changed your umask worth, however you’ll be sure that by means of typing:

  • sudo chmod -R 755 /var/www/

Create a pattern index.html web page the use of nano or your favourite editor:

  • nano /var/www/

Inside of, upload the next pattern HTML:


        Welcome to <span class="highlight"></span>!

Luck! The server block is operating!

Save and shut the report if you end up completed.

Make a brand new server block at /and so on/nginx/sites-available/

  • sudo nano /and so on/nginx/sites-available/

Paste within the following configuration block, up to date for our new listing and area title:

/and so on/nginx/sites-available/

server {
        pay attention 80;
        pay attention [::]:80;

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


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

Save and shut the report if you end up completed.

Allow the report by means of making a hyperlink from it to the sites-enabled listing:

  • sudo ln -s /and so on/nginx/sites-available/ /and so on/nginx/sites-enabled/

Two server blocks at the moment are enabled and configured to answer requests in keeping with their pay attention and server_name directives:

  • Will reply to requests for and
  • default: Will reply to any requests on port 80 that don’t fit the opposite two blocks.

To steer clear of a imaginable hash bucket reminiscence drawback that may get up from including further server names, it is important to regulate a unmarried worth within the /and so on/nginx/nginx.conf report. Open the report:

  • sudo nano /and so on/nginx/nginx.conf

To find the server_names_hash_bucket_size directive and take away the # image to uncomment the road:

/and so on/nginx/nginx.conf

http {
    server_names_hash_bucket_size 64;

Check for syntax mistakes:

Restart Nginx to allow your adjustments:

  • sudo systemctl restart nginx

Nginx will have to now be serving your area title. You’ll be able to take a look at this by means of navigating to, the place you will have to see one thing like this:

Nginx first server block


Now that you’ve got your internet server put in, you’ve got many choices for the kind of content material to serve and the applied sciences you wish to have to make use of to create a richer revel in.

If you need to construct out a extra whole software stack, take a look at this text on how to configure a LEMP stack on Ubuntu 18.04.