Bird
Raised Fist0
Nginxdevops~10 mins

Why URL manipulation handles routing in Nginx - Visual Breakdown

Choose your learning style10 modes available
Process Flow - Why URL manipulation handles routing
User enters URL in browser
↓
Browser sends HTTP request with URL
↓
nginx receives request
↓
nginx reads URL path
↓
nginx matches URL to routing rules
↓
nginx forwards request to correct backend or serves file
↓
Response sent back to user
The URL entered by the user guides nginx to decide which content or backend to serve by matching routing rules.
Execution Sample
Nginx
location /app1/ {
    proxy_pass http://backend1;
}

location /app2/ {
    proxy_pass http://backend2;
}
nginx uses URL paths /app1/ and /app2/ to route requests to different backend servers.
Process Table
StepIncoming URLnginx ActionRouting DecisionResult
1http://example.com/app1/pageReads URL path /app1/pageMatches location /app1/Forwards to backend1
2http://example.com/app2/homeReads URL path /app2/homeMatches location /app2/Forwards to backend2
3http://example.com/static/image.pngReads URL path /static/image.pngNo matching location, uses defaultServes static file or 404
4http://example.com/app3/Reads URL path /app3/No matching locationUses default server block or 404
💡 Routing ends after matching URL path to location blocks or default handling.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4
URL Path//app1/page/app2/home/static/image.png/app3/
Routing Matchnone/app1//app2/nonenone
Backend or Actionnonebackend1backend2default/staticdefault/404
Key Moments - 2 Insights
Why does nginx use the URL path to decide where to send the request?
Because the URL path uniquely identifies the resource or service the user wants, nginx matches it to location blocks to route correctly, as shown in steps 1 and 2 of the execution table.
What happens if the URL path does not match any location block?
nginx uses the default server block or returns a 404 error, as seen in steps 3 and 4 where no matching location is found.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, which backend does nginx forward to when the URL is http://example.com/app1/page?
Adefault server
Bbackend2
Cbackend1
D404 error
💡 Hint
Check Step 1 in the execution table where the URL path matches /app1/ and forwards to backend1.
At which step does nginx fail to find a matching location block?
AStep 2
BStep 3
CStep 1
DStep 4
💡 Hint
Look at the Routing Decision column in the execution table for steps without matching location.
If a new location /app3/ is added to nginx config, how would the routing decision change for URL http://example.com/app3/?
AIt would match /app3/ and forward accordingly
BIt would forward to backend1
CIt would forward to backend2
DIt would still use default server block
💡 Hint
Refer to the variable_tracker and execution_table showing how matching location affects routing.
Concept Snapshot
nginx routing uses URL paths to decide request handling.
Location blocks match URL prefixes.
Matching location forwards request to backend or serves files.
No match uses default server or returns 404.
URL manipulation changes routing outcome.
Full Transcript
When a user types a URL, the browser sends a request with that URL to nginx. nginx reads the URL path and compares it to its configured location blocks. If the URL path matches a location, nginx forwards the request to the backend server or serves the content defined there. If no location matches, nginx uses the default server block or returns a 404 error. This is why changing the URL path changes where the request goes, which is called URL manipulation handling routing.

Practice

(1/5)
1. What is the main purpose of URL manipulation in nginx routing?
easy
A. To direct incoming requests to the correct service or file based on the URL
B. To change the website's domain name automatically
C. To encrypt the URL for security
D. To block all incoming traffic

Solution

  1. Step 1: Understand URL manipulation in nginx

    URL manipulation means using nginx to read parts of the URL and decide where to send the request.
  2. Step 2: Identify the purpose of routing

    Routing sends requests to the right place, like a file or service, based on the URL path.
  3. Final Answer:

    To direct incoming requests to the correct service or file based on the URL -> Option A
  4. Quick Check:

    Routing = directing requests by URL [OK]
Hint: Routing sends requests to correct place by URL path [OK]
Common Mistakes:
  • Thinking nginx changes domain names automatically
  • Confusing URL encryption with routing
  • Assuming nginx blocks all traffic by default
2. Which of the following is the correct syntax to define a location block in nginx for URL routing?
easy
A. location /path { proxy_pass http://backend; }
B. route /path { proxy http://backend; }
C. server /path { proxy_pass http://backend; }
D. path /location { proxy_pass http://backend; }

Solution

  1. Step 1: Recall nginx syntax for URL routing

    nginx uses location blocks to match URL paths and route requests.
  2. Step 2: Identify correct syntax

    The correct syntax is location /path { proxy_pass http://backend; }. Other options use invalid keywords or structure.
  3. Final Answer:

    location /path { proxy_pass http://backend; } -> Option A
  4. Quick Check:

    location block syntax = location /path { proxy_pass http://backend; } [OK]
Hint: Use 'location' keyword with path and braces [OK]
Common Mistakes:
  • Using 'route' or 'path' instead of 'location'
  • Confusing 'server' block with 'location' block
  • Missing braces or semicolons in syntax
3. Given this nginx config snippet:
location /images/ {
  root /var/www/html;
}

What file path will nginx serve for a request to /images/logo.png?
medium
A. /images/logo.png
B. /var/www/html/logo.png
C. /var/www/html/images/logo.png
D. /var/www/logo.png

Solution

  1. Step 1: Understand nginx root with location

    The root directive appends the full request URI to the root path.
  2. Step 2: Combine root and URI

    Request URI is /images/logo.png. Root is /var/www/html. So full path is /var/www/html/images/logo.png.
  3. Final Answer:

    /var/www/html/images/logo.png -> Option C
  4. Quick Check:

    root + full URI = /var/www/html/images/logo.png [OK]
Hint: root + full URI = file path served [OK]
Common Mistakes:
  • Removing the /images/ part from the path
  • Confusing root with alias directive
  • Assuming root replaces the URI
4. You have this nginx config:
location /app/ {
  proxy_pass http://backend/;
}

Requests to /app/page return 404. What is the likely cause?
medium
A. location block syntax error
B. Missing root directive in location block
C. Incorrect server block name
D. Trailing slash in proxy_pass causes URL to be replaced incorrectly

Solution

  1. Step 1: Understand proxy_pass with trailing slash

    When proxy_pass ends with a slash, nginx replaces the matching part of the URL with the proxy URL path.
  2. Step 2: Analyze URL rewriting effect

    Request /app/page matches /app/. Because proxy_pass has trailing slash, nginx sends request as /page to backend. If backend expects /app/page, it returns 404.
  3. Final Answer:

    Trailing slash in proxy_pass causes URL to be replaced incorrectly -> Option D
  4. Quick Check:

    proxy_pass trailing slash changes URL [OK]
Hint: Trailing slash in proxy_pass rewrites URL path [OK]
Common Mistakes:
  • Thinking root directive is needed with proxy_pass
  • Blaming server block name instead of URL rewrite
  • Assuming syntax error without checking proxy_pass
5. You want nginx to route requests to /api/v1/ to http://backend/v1/ but keep the rest of the URL unchanged. Which config correctly handles this?
hard
A. location /api/v1/ { proxy_pass http://backend/; }
B. location /api/v1/ { proxy_pass http://backend/v1/; }
C. location /api/v1/ { proxy_pass http://backend; }
D. location /api/v1/ { proxy_pass http://backend/api/v1/; }

Solution

  1. Step 1: Understand proxy_pass URI replacement

    When proxy_pass has a URI ending in /, nginx replaces the matched location prefix with the proxy_pass URI and appends the remaining path.
  2. Step 2: Match requirement to config

    location /api/v1/ { proxy_pass http://backend/v1/; }: proxy_pass http://backend/v1/; replaces /api/v1/ with /v1/, so /api/v1/resource becomes http://backend/v1/resource.
  3. Final Answer:

    location /api/v1/ { proxy_pass http://backend/v1/; } -> Option B
  4. Quick Check:

    proxy_pass with replacement URI rewrites prefix [OK]
Hint: proxy_pass trailing / with path replaces location prefix [OK]
Common Mistakes:
  • Adding trailing slash rewrites and drops part of URL
  • Duplicating path segments in proxy_pass
  • Using wrong proxy_pass URL causing 404
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard