Saturday, September 19, 2020

How To Set Up Nginx Server Blocks on CentOS 8 Linux

Must read

How to Install Node.js and NPM on Debian 10 Linux

The Node.js is the very well-known JavaScript runtime environment used to JavaScript code server-side execution. It is an Open-source, cross-platform supported environment....

How to Deploy Rocket.Chat on Debian 10 Linux

Rocket.Chat is a very popular open-source team communication system; it is famous as an alternative to Slack. It provides various features along...

How to Install Tomcat 9 on Ubuntu 20.04 Operating System

The Apache Tomcat software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. Apache...

How to Install Docker on Ubuntu 20.04 Linux

Docker is an application use to simplify the application management process in containers, where containers use to run the application with the...
SATISH KUMAR
I am Satish Kumar, Founder of LinuxConcept. Linux and F.O.S.S enthusiast, love to work on open source platform and technologies.

Nginx Server Block is use to configure and run more than one website or web application on a single server/system.

The Nginx Server Block helps us configure web document root (web directory to store website files), use different SSL certificates for each site, and create different or separate security policies.

This tutorial will show how to create an Nginx server block (like apache virtual host) in simple steps on CentOS 8 Server.

Prerequisites

Before starting the tutorial, make sure you have the following prerequisites:

Having a domain name pointing to the server’s public IP. We will use testsite.com.

You have to install the Nginx server in your CentOS machine, if not pre-installed using this guide.

You should log in to the server as a user with sudo privileges.

Create the Directory Structure

The document root is a directory on the server where we store the website files and access the domain name requests as a response. You can configure the document root directory at any location you want on the server.

We will use the following directory structure:

/var/www/
├── testsite.com
│   └── public_html
├── testsite2.com
│   └── public_html
├── testsite3.com
│   └── public_html

We are always creating a separate directory in the directory “/var/www/” on our server to host each domain. Within each of these directories, we will create a directory called “public” to store the domain website files.

Now we create the root directory for our domain testsite.com:

$ sudo mkdir -p /var/www/testsite.com/public_html

For testing the site root directory is working, we will create an “index.html” file inside the domain’s document root directory.

$ sudo vim /var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to testsite.com</title>
  </head>
  <body>
    <h1>Success! testsite.com home page!</h1>
  </body>
</html>

To avoid any permission issue, as Nginx will run by the user “www-data,” we change the ownership of the domain’s document root directory to the Nginx user (www-data):

$ sudo chown -R nginx: /var/www/testsite.com

Create a Server Block

In the CentOS system, by default, we store the Nginx server block files in the directory “/etc/nginx/sites-available/.” These server blocks are getting enabled by creating a symbolic link to the directory “/etc/nginx/sites-enabled/.”

Now create a server block file for testsite.com with the below configuration:

$ sudo vim /etc/nginx/conf.d/example.com.conf
server {
    listen 80;

    server_name example.com www.example.com;

    root /var/www/example.com/public_html;

    index index.html;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}

You can give any name for the server block file, but we give the name of the domain for identification and best use.

You can now enable this newly configured server block by creating a symbolic link file in the directory “sites-enabled” as shown below:

$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

You can test the Nginx configuration for correct syntax using the following command:

$ sudo nginx -t

If there is no error, the output will look like below:

output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Now, restart the Nginx service for configured changes to take effect:

$ sudo systemctl restart nginx

To verify the server block working, open your site in the browser (http://testsite.com), and you will get the screen like below on your browser.

Conclusion

Now, you have learned to create an Nginx server block for hosted websites on CentOS 8, also learned to host multiple domains in a single Nginx instance and on a single CentOS server. You can create as much as you can server blocks for hosting multiple domains by repeating the above steps.

If you have any doubt, problem, facing any issue in Nginx configuration or feedback, please leave a comment below.

- Advertisement -

More articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest article

How to Install Node.js and NPM on Debian 10 Linux

The Node.js is the very well-known JavaScript runtime environment used to JavaScript code server-side execution. It is an Open-source, cross-platform supported environment....

How to Deploy Rocket.Chat on Debian 10 Linux

Rocket.Chat is a very popular open-source team communication system; it is famous as an alternative to Slack. It provides various features along...

How to Install Tomcat 9 on Ubuntu 20.04 Operating System

The Apache Tomcat software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. Apache...

How to Install Docker on Ubuntu 20.04 Linux

Docker is an application use to simplify the application management process in containers, where containers use to run the application with the...

How To Set Up Nginx Server Blocks on Debian 10 Linux

Nginx Server Block is use to configure and run more than one website or web application on a single server/system. The Nginx Server...