Bird
Raised Fist0
Nginxdevops~30 mins

Directives and blocks in Nginx - Mini Project: Build & Apply

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Understanding Directives and Blocks in Nginx Configuration
📖 Scenario: You are setting up a simple web server using Nginx. To do this, you need to write a configuration file that tells Nginx how to handle requests.In Nginx, configuration is done using directives and blocks. Directives are instructions, and blocks group related directives together.
🎯 Goal: Build a basic Nginx configuration file with a http block containing a server block. Inside the server block, set the server name and root directory using directives.
📋 What You'll Learn
Create an http block
Inside http, create a server block
Inside server, add a server_name directive with value example.com
Inside server, add a root directive with value /var/www/html
Print the complete configuration at the end
💡 Why This Matters
🌍 Real World
Nginx is a popular web server used to serve websites and applications. Understanding directives and blocks helps you configure it to handle web traffic correctly.
💼 Career
Many DevOps and system administrator roles require writing and managing Nginx configuration files to deploy and maintain web services.
Progress0 / 4 steps
1
Create the http block
Write the opening and closing lines for an http block in Nginx configuration. Use http { to start and } to end the block.
Nginx
Hint

The http block groups all HTTP-related settings.

2
Add a server block inside http
Inside the existing http block, add a server block using server { and } lines.
Nginx
Hint

The server block defines settings for one website or domain.

3
Add server_name and root directives inside server
Inside the server block, add the directive server_name example.com; and the directive root /var/www/html; each on its own line.
Nginx
Hint

The server_name directive sets the domain name. The root directive sets the folder for website files.

4
Print the complete Nginx configuration
Print the entire Nginx configuration stored in a variable called nginx_config.
Nginx
Hint

Use print(nginx_config) to display the configuration.

Practice

(1/5)
1. What is the main difference between a directive and a block in an nginx configuration?
easy
A. A directive groups multiple blocks; a block is a single instruction ending with a semicolon.
B. A directive is a single instruction ending with a semicolon; a block groups multiple directives inside curly braces.
C. A directive is used only for server settings; a block is used only for location settings.
D. A directive must always contain a block inside it.

Solution

  1. Step 1: Understand directive syntax

    A directive is a single instruction that ends with a semicolon in nginx configuration.
  2. Step 2: Understand block syntax

    A block groups multiple directives inside curly braces to organize related settings.
  3. Final Answer:

    A directive is a single instruction ending with a semicolon; a block groups multiple directives inside curly braces. -> Option B
  4. Quick Check:

    Directive = single instruction; Block = group of directives [OK]
Hint: Directives end with ; blocks use { } to group [OK]
Common Mistakes:
  • Confusing directives with blocks
  • Thinking blocks end with semicolon
  • Assuming directives can contain blocks
2. Which of the following is the correct syntax for an nginx directive?
easy
A. listen 80;
B. server { listen 80 }
C. location / { listen 80 }
D. listen 80

Solution

  1. Step 1: Identify directive syntax

    A directive must end with a semicolon and is a single instruction.
  2. Step 2: Check each option

    listen 80; ends with a semicolon and is a single instruction: listen 80;.
  3. Final Answer:

    listen 80; -> Option A
  4. Quick Check:

    Directive ends with ; [OK]
Hint: Directives always end with a semicolon ; [OK]
Common Mistakes:
  • Omitting semicolon at end
  • Using curly braces for directives
  • Mixing block syntax with directive
3. Given this nginx configuration snippet, what will happen when a request is made to /images?
location /images/ {
    root /data;
    autoindex on;
}
medium
A. Nginx will return a 404 error because root is incorrectly used.
B. Nginx will serve files from /images/ directory on the server root.
C. Nginx will redirect requests to /data/images/ automatically.
D. Nginx will serve files from /data/images/ and show a directory listing if no index file exists.

Solution

  1. Step 1: Understand the location block

    The location block matches requests starting with /images/.
  2. Step 2: Interpret the root directive

    Root sets the base directory to /data, so files are served from /data/images/.
  3. Step 3: Effect of autoindex on

    If no index file exists, nginx shows a directory listing.
  4. Final Answer:

    Nginx will serve files from /data/images/ and show a directory listing if no index file exists. -> Option D
  5. Quick Check:

    location + root + autoindex = serve files with listing [OK]
Hint: root sets base path; autoindex shows directory listing [OK]
Common Mistakes:
  • Confusing root with alias
  • Assuming redirect happens automatically
  • Ignoring autoindex effect
4. Identify the error in this nginx configuration snippet:
server {
    listen 80
    server_name example.com;
}
medium
A. listen directive should be inside location block.
B. server_name directive cannot be inside server block.
C. Missing semicolon after listen 80 directive.
D. Curly braces are missing around listen directive.

Solution

  1. Step 1: Check syntax of directives

    Each directive must end with a semicolon in nginx configuration.
  2. Step 2: Locate missing semicolon

    The listen 80 directive is missing a semicolon at the end.
  3. Final Answer:

    Missing semicolon after listen 80 directive. -> Option C
  4. Quick Check:

    Every directive ends with ; [OK]
Hint: Check every directive ends with ; [OK]
Common Mistakes:
  • Forgetting semicolon at directive end
  • Misplacing directives outside server block
  • Adding unnecessary braces
5. You want to configure nginx to serve static files from /var/www/html for all requests under /static/. Which configuration block correctly achieves this?
hard
A. location /static/ { alias /var/www/html/; }
B. location /static { alias /var/www/html; }
C. location /static/ { root /var/www/html; }
D. location /static/ { root /var/www/html/; }

Solution

  1. Step 1: Understand root vs alias

    Root appends the request URI to the root path; alias replaces the location prefix with the alias path.
  2. Step 2: Match location and alias usage

    For prefix locations ending with /, alias must end with / to correctly map paths.
  3. Step 3: Evaluate options

    location /static/ { alias /var/www/html/; } uses location /static/ { alias /var/www/html/; } which correctly serves files under /static/ from /var/www/html.
  4. Final Answer:

    location /static/ { alias /var/www/html/; } -> Option A
  5. Quick Check:

    Use alias with trailing slash for prefix location [OK]
Hint: Use alias with trailing slash for prefix locations [OK]
Common Mistakes:
  • Using root instead of alias for prefix paths
  • Missing trailing slash on alias path
  • Mismatching location and alias slashes