Bird
Raised Fist0
Nginxdevops~10 mins

Directives and blocks in Nginx - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to set the server listening port to 8080.

Nginx
server {
    listen [1];
}
Drag options to blanks, or click blank then click option'
A3000
B8080
C443
D80
Attempts:
3 left
💡 Hint
Common Mistakes
Using port 80 instead of 8080
Putting the port in quotes
2fill in blank
medium

Complete the code to define the root directory for the server.

Nginx
server {
    root [1];
}
Drag options to blanks, or click blank then click option'
A/etc/nginx
B/usr/local/bin
C/var/www/html
D/home/user
Attempts:
3 left
💡 Hint
Common Mistakes
Using system config directories like /etc/nginx
Using user home directories
3fill in blank
hard

Fix the error in the location block to serve static files from /static.

Nginx
server {
    location /static/ [1]
        root /var/www/html;
    }
}
Drag options to blanks, or click blank then click option'
A<
B(
C[
D{
Attempts:
3 left
💡 Hint
Common Mistakes
Using parentheses or brackets instead of curly braces
Missing the opening brace
4fill in blank
hard

Complete the code to create a server block that listens on port 80 and serves files from /usr/share/nginx/html.

Nginx
server {
    listen [1];
    root /usr/share/nginx/html;
}
Drag options to blanks, or click blank then click option'
A{
B8080
C80
D(
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong brace types
Setting listen to wrong port
5fill in blank
hard

Complete the code to create a location block that matches /images/, uses alias to /data/images, and closes the block properly.

Nginx
location /images/ {
    alias [1];
}
Drag options to blanks, or click blank then click option'
A{
B/data/images
C}
D(
Attempts:
3 left
💡 Hint
Common Mistakes
Using parentheses instead of braces
Forgetting to close the block
Using root instead of alias

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