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 prefix match in nginx configuration?
A prefix match in nginx is a way to match the beginning part of a URL path to decide how to handle the request. It checks if the URL starts with a specific string.
Click to reveal answer
beginner
How do you define a prefix match location block in nginx?
You define it by using location /prefix/ { ... } without any special symbols. This matches any URL starting with '/prefix/'.
Click to reveal answer
intermediate
What is the difference between prefix match and exact match in nginx?
Prefix match checks if the URL starts with a string, while exact match uses = to match the URL exactly with no extra characters.
Click to reveal answer
intermediate
What happens if multiple prefix matches apply to a request in nginx?
Nginx chooses the longest matching prefix. For example, if both /app/ and /app/api/ match, it picks /app/api/.
Click to reveal answer
beginner
Can prefix matches in nginx use regular expressions?
No, prefix matches are simple string matches. Regular expressions require ~ or ~* modifiers in location blocks.
Click to reveal answer
Which nginx location block uses prefix match?
Alocation /images/ { }
Blocation = /images/ { }
Clocation ~ /images/ { }
Dlocation ^~ /images/ { }
✗ Incorrect
The block without any special symbols uses prefix match. '=' is exact match, '~' is regex, '^~' is prefix match with priority.
If you have location /app/ and location /app/api/, which one handles /app/api/users?
Alocation /app/api/
BBoth equally
Clocation /app/
DNeither
✗ Incorrect
Nginx picks the longest prefix match, so /app/api/ handles /app/api/users.
What symbol marks an exact match in nginx location?
A~
B=
C^~
D*
✗ Incorrect
The '=' symbol marks an exact match in nginx location blocks.
Can prefix match location blocks use regular expressions?
AYes, always
BOnly with =
CNo, never
DOnly with ^~
✗ Incorrect
Prefix matches are simple string matches and do not support regex.
What does the '^~' modifier do in nginx location?
APrefix match with higher priority
BRegex match
CExact match
DCase-insensitive match
✗ Incorrect
The '^~' modifier tells nginx to use prefix match and stop searching further if matched.
Explain how nginx chooses a location block when multiple prefix matches exist.
Think about which prefix is the longest that fits the URL.
You got /3 concepts.
Describe the difference between prefix match and exact match in nginx location blocks.
Consider how nginx treats the URL string in each case.
You got /3 concepts.
Practice
(1/5)
1. What does prefix match in nginx do when routing requests?
easy
A. It matches requests based on the start of the URL path.
B. It matches requests only if the full URL matches exactly.
C. It matches requests based on the file extension.
D. It matches requests randomly to any location block.
Solution
Step 1: Understand prefix match concept
Prefix match means nginx checks if the URL path starts with a specific string.
Step 2: Compare with other matching types
Exact match requires full URL match, file extension match is unrelated, random match is invalid.
Final Answer:
It matches requests based on the start of the URL path. -> Option A
Quick Check:
Prefix match = start of URL path [OK]
Hint: Prefix match checks URL start, not full or random [OK]
Common Mistakes:
Confusing prefix match with exact match
Thinking prefix match checks file extensions
Assuming prefix match is random
2. Which of the following is the correct syntax for a prefix match location in nginx?
easy
A. location = /images/ { }
B. location ^~ /images/ { }
C. location /images/ { }
D. location ~ /images/ { }
Solution
Step 1: Identify prefix match syntax
Prefix match uses plain location /prefix/ { } without modifiers.
Step 2: Understand other modifiers
= is exact match, ^~ is prefix but with higher priority, ~ is regex match.
Final Answer:
location /images/ { } -> Option C
Quick Check:
Plain location = prefix match [OK]
Hint: Plain location block means prefix match [OK]
Which backend will handle a request to /app/api/users?
medium
A. Both backends in round-robin
B. http://backend2
C. No backend, 404 error
D. http://backend1
Solution
Step 1: Understand prefix match selection
nginx selects the location with the longest matching prefix for plain prefix locations (no modifiers).
Step 2: Compare prefixes
Both /app/ (length 5) and /app/api/ (length 9) match /app/api/users, but /app/api/ is longer, so it wins.
Final Answer:
http://backend2 -> Option B
Quick Check:
Longest prefix wins [OK]
Hint: Longest matching prefix wins [OK]
Common Mistakes:
Thinking config order (first match) wins instead of longest prefix
Thinking regex or exact match applies here
Believing nginx load balances both backends
4. You wrote this nginx config:
location /static {
root /var/www/html;
}
Requests to /static/css/style.css return 404. What is the likely error?
medium
A. root directive path is incorrect
B. location block should use = modifier
C. Missing trailing slash in location prefix
D. proxy_pass is missing
Solution
Step 1: Understand root directive behavior
root appends the full request URI (/static/css/style.css) to /var/www/html, looking for /var/www/html/static/css/style.css.
Step 2: Identify likely cause
If static files are at /var/www/html/css/style.css (without static/), root path doesn't strip prefix, causing 404. (Use alias /var/www/html; to strip.)
Final Answer:
root directive path is incorrect -> Option A
Quick Check:
root + full URI (no prefix strip) [OK]
Hint: root appends full URI; alias strips prefix [OK]
Common Mistakes:
Confusing root (full URI) with alias (strips prefix)
Thinking trailing slash strips prefix for root
Adding unnecessary modifiers like =
5. You want nginx to route all requests starting with /api/ to http://backend_api and all others to http://backend_web, ensuring the /api/ prefix has priority even if regex locations follow. Which config correctly uses prefix match for this?