Bird
Raised Fist0
Nginxdevops~5 mins

Named locations (@) in Nginx - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is a named location in nginx and how is it defined?
A named location in nginx is a special internal location block identified by an '@' prefix. It is defined using location @name { ... } and is used for internal redirects within the server configuration.
Click to reveal answer
beginner
How do you perform an internal redirect to a named location in nginx?
You use the try_files directive or the error_page directive with a URI starting with '@'. For example, try_files $uri @fallback; redirects internally to the named location @fallback if the file is not found.
Click to reveal answer
intermediate
Why would you use named locations in nginx instead of regular locations?
Named locations are used for internal redirects only and are not accessible directly by clients. They help organize complex routing logic, such as fallback handling or error processing, without exposing these paths externally.
Click to reveal answer
beginner
Can a named location be accessed directly by a client request?
No, named locations cannot be accessed directly by clients. They are internal and only reachable through internal redirects configured in nginx.
Click to reveal answer
intermediate
Show an example of a named location used for fallback in nginx.
Example:
location / {
  try_files $uri $uri/ @fallback;
}

location @fallback {
  proxy_pass http://backend;
}

This tries to serve the file, and if not found, internally redirects to @fallback which proxies the request.
Click to reveal answer
What prefix is used to define a named location in nginx?
A@
B#
C$
D%
Can clients directly access a named location URL in nginx?
AYes, always
BOnly with special headers
COnly if explicitly allowed
DNo, named locations are internal only
Which directive is commonly used to redirect to a named location if a file is not found?
Atry_files
Brewrite
Cproxy_pass
Dlisten
What is the main purpose of using named locations in nginx?
ATo serve static files
BTo enable SSL
CTo create internal redirects for complex routing
DTo define server ports
Which of the following is a valid named location block in nginx?
Alocation /@fallback { }
Blocation @fallback { }
Clocation fallback@ { }
Dlocation fallback { }
Explain what named locations (@) are in nginx and why they are useful.
Think about how nginx handles internal routing and fallback.
You got /5 concepts.
    Describe how to configure nginx to use a named location for fallback when a requested file is missing.
    Focus on the try_files syntax and named location block.
    You got /4 concepts.

      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