Skip to main content

Server Blocks Configuration

Configure Nginx to serve multiple websites on the same server using server blocks.


Server Block Setup

1. Create Server Block File

sudo nano /etc/nginx/sites-available/example.com

2. Add Server Block Configuration

server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;

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

error_log /var/log/nginx/example.com_error.log;
access_log /var/log/nginx/example.com_access.log;
}

3. Create Web Directory

sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com

4. Enable Site

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

5. Disable Default Site (Optional)

sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

Multiple Server Blocks

Example: Two Sites

# Site 1
server {
listen 80;
server_name site1.com;
root /var/www/site1.com;
index index.html;
}

# Site 2
server {
listen 80;
server_name site2.com;
root /var/www/site2.com;
index index.html;
}

Quick Commands

TaskCommand
Enable sitesudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
Disable sitesudo rm /etc/nginx/sites-enabled/site
List sitesls /etc/nginx/sites-enabled/
Test configsudo nginx -t

Note: Always test configuration and reload Nginx after changes.