Bird
Raised Fist0
Nginxdevops~10 mins

Named locations (@) 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 define a named location called @maintenance.

Nginx
location [1] {
    return 503;
}
Drag options to blanks, or click blank then click option'
A#maintenance
B/maintenance
C@maintenance
D~maintenance
Attempts:
3 left
💡 Hint
Common Mistakes
Using a slash '/' instead of '@' for named locations.
Using '#' or '~' which are not valid for named locations.
2fill in blank
medium

Complete the code to redirect requests to the named location @fallback.

Nginx
location / {
    try_files $uri $uri/ [1];
}
Drag options to blanks, or click blank then click option'
Aproxy_pass @fallback
Bredirect @fallback
Crewrite @fallback
D@fallback
Attempts:
3 left
💡 Hint
Common Mistakes
Adding 'redirect' or 'rewrite' keywords inside try_files.
Forgetting the '@' symbol before the location name.
3fill in blank
hard

Fix the error in the named location definition to properly return a 404 status.

Nginx
location [1] {
    return 404;
}
Drag options to blanks, or click blank then click option'
A/not_found
B@not_found
Cnot_found
D~not_found
Attempts:
3 left
💡 Hint
Common Mistakes
Omitting '@' in the named location name.
Using slashes or regex symbols in named location names.
4fill in blank
hard

Fill both blanks to define a named location @error and redirect to it from /error.

Nginx
location /error {
    error_page 500 502 503 504 [1];
}

location [2] {
    return 500;
}
Drag options to blanks, or click blank then click option'
A@error
B/error
C@fail
D/fail
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for error_page and location.
Omitting '@' in named location names.
5fill in blank
hard

Fill all three blanks to create a named location @maintenance, redirect to it from /, and return 503 inside it.

Nginx
location / {
    try_files $uri $uri/ [1];
}

location [2] {
    return [3];
}
Drag options to blanks, or click blank then click option'
A@maintenance
B503
C@down
D404
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for the named location in try_files and location.
Returning wrong HTTP status code inside the named location.

Practice

(1/5)
1. What is the main purpose of a named location starting with @ in nginx configuration?
easy
A. To define an internal jump point for request handling
B. To specify a URL accessible by clients
C. To set environment variables for nginx
D. To configure SSL certificates

Solution

  1. Step 1: Understand named locations in nginx

    Named locations start with @ and are used internally by nginx to jump to specific blocks of configuration during request processing.
  2. Step 2: Differentiate from client-accessible URLs

    Named locations are not accessible directly by clients; they serve as internal routing points.
  3. Final Answer:

    To define an internal jump point for request handling -> Option A
  4. Quick Check:

    Named location = internal jump point [OK]
Hint: Named locations start with @ and are internal only [OK]
Common Mistakes:
  • Thinking named locations are public URLs
  • Confusing named locations with environment variables
  • Assuming named locations configure SSL
2. Which of the following is the correct syntax to define a named location in nginx?
easy
A. location @named { ... }
B. location /named { ... }
C. named_location @named { ... }
D. location #named { ... }

Solution

  1. Step 1: Recall nginx named location syntax

    Named locations are defined using location @name { ... } where @ prefixes the name.
  2. Step 2: Check options for correct syntax

    location @named { ... } uses location @named { ... }, which is the correct syntax. Other options use invalid prefixes or keywords.
  3. Final Answer:

    location @named { ... } -> Option A
  4. Quick Check:

    Named location syntax = location @name [OK]
Hint: Named locations always start with @ in location block [OK]
Common Mistakes:
  • Omitting the @ symbol
  • Using # or other symbols instead of @
  • Using invalid keywords like named_location
3. Given this nginx config snippet:
location / {
  error_page 404 = @fallback;
}

location @fallback {
  return 200 'Fallback reached';
}

What will be the response body if a client requests a non-existing page?
medium
A. 404 Not Found error page
B. Empty response with status 200
C. Fallback reached
D. 500 Internal Server Error

Solution

  1. Step 1: Understand error_page directive with named location

    The error_page 404 = @fallback; tells nginx to internally redirect 404 errors to the named location @fallback.
  2. Step 2: Analyze the named location response

    The @fallback location returns status 200 with body 'Fallback reached'. So a missing page triggers this response.
  3. Final Answer:

    Fallback reached -> Option C
  4. Quick Check:

    404 triggers @fallback = 'Fallback reached' [OK]
Hint: error_page 404 = @name redirects internally [OK]
Common Mistakes:
  • Expecting default 404 page instead of fallback
  • Confusing status codes returned
  • Thinking named locations are client URLs
4. Identify the error in this nginx config snippet:
location / {
  error_page 404 = @notfound;
}

location notfound {
  return 404 'Not Found';
}
medium
A. location / block cannot have error_page
B. Named location missing @ prefix
C. return directive cannot use status 404
D. error_page directive syntax is wrong

Solution

  1. Step 1: Check named location definition

    The named location referenced is @notfound, but the location block is defined as location notfound without the @.
  2. Step 2: Confirm correct named location syntax

    Named locations must start with @, so it should be location @notfound.
  3. Final Answer:

    Named location missing @ prefix -> Option B
  4. Quick Check:

    Named location must start with @ [OK]
Hint: Named location blocks must start with @ [OK]
Common Mistakes:
  • Defining named location without @
  • Misusing error_page syntax
  • Thinking return 404 is invalid
5. You want to reuse a block of configuration for multiple error codes (404 and 403) using a named location @error_handler. Which configuration correctly achieves this?
hard
A.
error_page 404 403 @error_handler {
  return 403 'Access denied';
}
B.
error_page 404, 403 = @error_handler;

location @error_handler {
  return 403 'Access denied';
}
C.
error_page 404 403 @error_handler;

location @error_handler {
  return 403 'Access denied';
}
D.
error_page 404 = @error_handler;
error_page 403 = @error_handler;

location @error_handler {
  return 403 'Access denied';
}

Solution

  1. Step 1: Understand error_page syntax for multiple codes

    To assign multiple error codes to the same named location, you can use separate error_page directives for each code pointing to the same named location.
  2. Step 2: Validate options

    error_page 404 = @error_handler;
    error_page 403 = @error_handler;
    
    location @error_handler {
      return 403 'Access denied';
    }
    correctly uses two error_page lines for 404 and 403, both redirecting to @error_handler. The named location block is defined properly.
  3. Final Answer:

    Separate error_page directives for each code pointing to @error_handler -> Option D
  4. Quick Check:

    Use separate error_page lines for multiple codes [OK]
Hint: Use separate error_page lines for multiple codes [OK]
Common Mistakes:
  • Trying to list multiple codes with = @location in one line
  • Incorrect error_page syntax without =
  • Defining location block inside error_page