Setup Virtual Host [Server Blocks] in Nginx

Description: Here I have explained how to Setup Virtual Host [Server Blocks] in Nginx

Server Blocks, often referred to as Nginx virtual host are a feature of the Nginx web server that allows you to host multiple websites on one server. As opposed to setting up and configuring a server for each domain, hosting a number of websites on a single machine saves both time and money.

Procedure: 

Create Directory Structure: To host multiple site on Nginx need to create individual directory structure to store data. In example I have created 2 site virtual host under /var/www directory

# mkdir -p /var/www/site1.com/html
# mkdir -p /var/www/site2.com/html
 Change Permission on directory: Change ownership on both site directories using chown command

# chown -R $user1.$user1 /var/www/site1.com/html
# chown -R $user2.$user2 /var/www/site2.com/html
# chmod -R 755 /var/www
Create index.html in both Directory: Create index.html file on both site directory respectively.
Setup Environment for Server Block: Before setup server block need to create 2 directory for setup.
  • Sites-available : Directory store server blocks 
  • Sites-enable : Directory which tell Nginx to publish and block share content
Open Nginx configuration and modify file

vi /etc/nginx/nginx.config [ Inside http block add following two lines]
include /etc/nginx/sites-enabled/*.conf
server_names_hash_bucket_size 64;
nginx configuration file
First line to check sites-enabled directory and second line for increase memory is reserved for examine multiple domain name.
After made changes run below command to verify the configuration
# nginx -t 
If syntax is OK then test was successful as in image.
testing nginx configuration with output that the test is sucessful
Create Virtual Host for the first website with cp and make a copy exact copy of file
# cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/site1.com.conf
Open configuration file using vi editor
# vi /etc/nginx/sites-available/site1.com.conf
cloned nginx default configuration file displayed
You need to edit below 3 lines in configuration 
        server name site1.com http://www.site1.com;
        root /var/www/site1.com/html;
        try_files $uri $uri/ =404;
Same configuration you need to done for site2 just need to change name.
Enable Site configuration or Server block: To enable configuration need to link site available with site enable. 

# ln -s /etc/nginx/sites-available/site1.com.conf   /etc/nginx/sites-enabled/site1.com.conf
Restart Nginx Service:

# systemctl restart nginx 
# vi  /etc/hosts
ip_address site1.com
ip_address site2.com
Verify Server Blocks Setup

How to Install Nginx on Centos 7

Description: Here I have explained how to install and configure Nginx on Centos 7.

Procedure: Nginx (pronounced Engine X) is popular web server with good performance and it is alternate of Apache web server. Nginx also works as load balancer, reverse proxy and standard mail server.
Prerequisites:
  • Centos 7 server
  • Root privileges
  • Selinux setup properly

Update Repository Package List

# yum -y update
Install Extra Packages for Enterprise Linux [EPEL]

# yum install -y epel-release
Install Nginx 

# yum install -y nginx 
Start and Enable Nginx Service

# systemctl start nginx
# systemctl enable nginx
Note: If you have already install and running apache/ http, Disable it before install nginx
Enable port from firewall 

# firewall-cmd  –zone=public –permanent –add-service=http
# firewall-cmd  –zone=public –permanent –add-service=https
Verify Nginx by browse your IP Address in Browser.