Create multiple Sites in Nginx

Create multiple Sites in Nginx

Install nginx if not already

# Update the package repository
sudo apt update
sudo apt install -y nginx
# Verify nginx is running by
sudo systemctl status nginx.service 
# if not running enabled and start
sudo systemctl enable nginx.service && sudo systemctl start nginx.service

Define the root of the sites

sudo mkdir /var/www/sitename.com
sudo mkdir /var/www/another-site.com

Add hello world HTML page inside sitename.com , another-site.com

For sitename.com

echo '<html>
<head>
    <title>Welcome to sitename.com!</title>
</head>
<body>
    <h1 style="color: green;">The sitename.com is working!</h1>
</body>
</html>'  | sudo tee /var/www/sitename.com/index.html

For another-site.com

echo '<html>
<head>
    <title>Welcome to another-site.com!</title>
</head>
<body>
    <h1 style="color: green;">The another-site.com is working!</h1>
</body>
</html>'  | sudo tee /var/www/another-site.com/index.html

Configuration of the sites

for sitename.com

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

        root /var/www/sitename.com;
        index index.html index.htm;

        server_name sitename.com www.sitename.com;

        location / {
                try_files $uri $uri/ =404;
        }
}
' | sudo tee /etc/nginx/sites-available/sitename.com

for another-site.com

echo '
server {
        listen 80;
        listen [::]:80;
        root /var/www/another-site.com;
        index index.html index.htm;

        server_name another-site.com www.another-site.com;

        location / {
                try_files $uri $uri/ =404;
        }
}
'  | sudo tee /etc/nginx/sites-available/another-site.com

Enable site configuration

#Create a symbolic link from sites-available to sites-enabled 
# for sitename.com
sudo ln -s /etc/nginx/sites-available/sitename.com /etc/nginx/sites-enabled/

# for another-site.com
sudo ln -s /etc/nginx/sites-available/another-site.com /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Test from Local Machine

If you are testing this in your local lab environment or virtual box, etc., add an entry to the /etc/hosts file on your main laptop. Map the domain name (sitename.com, another-site.com) to the IP address of your Ubuntu server.

Note: If you have a real server and a domain name, you don't need the above steps. Simply add an A DNS record to your domain name provider, using the IP address of the server as the value.

Next we will look how to server PHP files

Did you find this article valuable?

Support Beyond DevOps by becoming a sponsor. Any amount is appreciated!