Google Cloud

How to Set Up Nginx Server Block – Debian 9

Disclosure: This post may contain affiliate links, which means we may receive a commission if you click a link and purchase something that we recommended.

Pinterest LinkedIn Tumblr

In Nginx web server, server blocks (similar to the virtual hosts in Apache) can be used to configure and host more than one domain on a single server on Google Cloud

In this guide you are going to learn how to set up server blocks in Nginx on your Debian 9 server on Google Compute Engine.

Not using Debian 9? Choose a different OS:

CentOS 7

Debian 9


  1. Your Compute Engine Instance running.
  2. For setting up Compute Engine, see the Setting up Compute Engine Instance.
  3. For installing Nginx and PHP, see how to install LEMP in Compute Engine Instance.
  4. Domain name is pointed to your virtual machine.
  5. For setting up Cloud DNS, see the Setting up Google Cloud DNS for your domain.
  6. Google Cloud SQL Setup, see Setup Cloud SQL and connect with Compute Engine.

Setup Server Blocks

1. Set Up New Root Directory

By default, Nginx provides a default server block configuration. It is configured to serve documents out of a directory at /var/www/html.

Now you shall remove the default configuration and setup a new directory as follows.

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default

You can make the new root directory setup as follows.

Replace with your original domain name.

---- logs
---- public

The public directory is your website’s root directory and logs directory for your error logs.

Now we create these directories with the following command.

mkdir -p

2. Set up Correct Permissions

Once the directories are created you can setup correct permissions.

mkdir -p
sudo chmod -R 755

3. Create Server Block

Now create a new Nginx configuration for your website in the sites-available directory.

sudo nano /etc/nginx/sites-available/

Copy and paste the following configuration, ensure that you change the server_name, error_log and root directives to match your domain name. Hit CTRL+X followed by Y to save the changes.

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

error_log /home/username/;

root /home/username/;
index index.html index.htm;

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

If you have installed PHP 7.3 you can use this configuration.

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

error_log /home/username/;

root /home/username/;
index index.html index.php;

location / {
try_files $uri $uri/ /index.php?$args;

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;

To enable this newly created website configuration, symlink the file that you just created into the sites-enabled directory.

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Check your configuration and restart Nginx for the changes to take effect.

sudo nginx -t
sudo service nginx restart

4. Create Sample Page

Now you can create a new sample page and test the configuration.

sudo nano /home/username/

Paste the below piece of code and hit Ctrl+X followed by Y and Enter to save the file.

        <title>Welcome to Nginx Test!</title>
        <h1>Success!  Nginx server block is working!</h1>

Now visit your domain name in your browser.

You should the see the following message.

Success!  Nginx server block is working!

Finally delete the sample page with the below command.

sudo rm -f /home/username/

Great! Now you have configured Nginx server blocks successfully on Debian 9. You can also create additional sites using the above method.

Write A Comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.