Bird
Raised Fist0
Nginxdevops~20 mins

Wildcard and regex server names in Nginx - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Wildcard and Regex Server Name Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Nginx server block matching with wildcard
Given the following nginx server block, what hostname will it match?
Nginx
server {
    server_name *.example.com;
    listen 80;
}
Aexample.com
Bapi.example.com
Csub.api.example.com
Dexample.net
Attempts:
2 left
💡 Hint

Remember that *.example.com matches one subdomain level only.

💻 Command Output
intermediate
2:00remaining
Regex server_name matching in nginx
What hostname will this nginx server block match?
Nginx
server {
    server_name ~^www\.(.+)\.example\.com$;
    listen 80;
}
Awww.api.example.com
Bwww.example.com
Capi.example.com
Dwww.api.example.net
Attempts:
2 left
💡 Hint

The regex matches hostnames starting with www. and ending with .example.com.

❓ Configuration
advanced
2:00remaining
Correct nginx server_name for multiple subdomains
Which server_name directive correctly matches any subdomain of example.com, including multiple levels like sub.api.example.com?
Aserver_name ~^www\.(.+)\.example\.com$;
Bserver_name *.example.com;
Cserver_name example.com *.example.com;
Dserver_name ~^(.+\.)?example\.com$;
Attempts:
2 left
💡 Hint

Think about how to match zero or more subdomain levels with regex.

❓ Troubleshoot
advanced
2:00remaining
Why does this nginx server block not match the hostname?
You configured this server block: server { server_name *.example.com; listen 80; } But requests to example.com are not handled by this block. Why?
AThe server_name directive requires quotes around the wildcard
BThe listen directive is missing the IP address
CThe wildcard does not match the root domain without subdomain
DThe server block must include a regex to match example.com
Attempts:
2 left
💡 Hint

Think about what *.example.com matches.

✅ Best Practice
expert
2:00remaining
Choosing server_name order for overlapping patterns
You have these server blocks: 1) server_name example.com; 2) server_name *.example.com; 3) server_name ~^www\.(.+)\.example\.com$; Which order should nginx evaluate these to ensure the most specific matches are used first?
AExact match first, then wildcard, then regex
BRegex server_name first, then wildcard, then exact match
CExact match first, then regex, then wildcard
DWildcard first, then exact match, then regex
Attempts:
2 left
💡 Hint

Exact matches have highest priority, regex lowest.

Practice

(1/5)
1. What does a wildcard server name like *.example.com match in nginx?
easy
A. Any domain ending with example.com, including example.com itself
B. Only the exact domain example.com
C. Any subdomain of example.com, like blog.example.com or shop.example.com
D. Only domains starting with a star character

Solution

  1. Step 1: Understand wildcard usage in server names

    A wildcard * before a domain matches any subdomain part, but not the root domain itself.
  2. Step 2: Apply to *.example.com

    This matches domains like blog.example.com or shop.example.com, but not example.com alone.
  3. Final Answer:

    Any subdomain of example.com, like blog.example.com or shop.example.com -> Option C
  4. Quick Check:

    Wildcard * matches subdomains only [OK]
Hint: Wildcard * matches subdomains, not the root domain [OK]
Common Mistakes:
  • Thinking wildcard matches the root domain
  • Confusing wildcard with regex syntax
  • Assuming wildcard matches any domain ending
2. Which of the following is the correct syntax to define a regex server name in nginx?
easy
A. server_name /www\d+\.example\.com/;
B. server_name *example.com;
C. server_name ^www\d+\.example\.com$;
D. server_name ~^www\d+\.example\.com$;

Solution

  1. Step 1: Recall regex server name syntax in nginx

    Regex server names start with a tilde ~ followed by the regex pattern.
  2. Step 2: Check each option

    server_name ~^www\d+\.example\.com$; uses ~^www\d+\.example\.com$ which is correct regex syntax. Others either miss the tilde or use invalid delimiters.
  3. Final Answer:

    server_name ~^www\d+\.example\.com$; -> Option D
  4. Quick Check:

    Regex server names start with ~ [OK]
Hint: Regex server names always start with ~ in nginx [OK]
Common Mistakes:
  • Omitting the ~ before regex pattern
  • Using * instead of ~ for regex
  • Using slashes / / as regex delimiters
3. Given this nginx config snippet:
server {
  server_name ~^www\d+\.example\.com$;
  return 200 'Matched regex server name';
}

What will be the response for a request to www12.example.com?
medium
A. Matched regex server name
B. 500 Internal Server Error
C. 404 Not Found
D. Default nginx welcome page

Solution

  1. Step 1: Understand the regex pattern

    The regex ^www\d+\.example\.com$ matches domains starting with 'www' followed by one or more digits, then '.example.com'.
  2. Step 2: Check if 'www12.example.com' matches

    'www12.example.com' matches the pattern because '12' are digits after 'www'.
  3. Final Answer:

    Matched regex server name -> Option A
  4. Quick Check:

    Regex matches www12.example.com [OK]
Hint: Check if domain fits regex pattern exactly [OK]
Common Mistakes:
  • Assuming regex matches partial strings
  • Ignoring start ^ and end $ anchors
  • Confusing regex with wildcard matching
4. You wrote this nginx config:
server {
  server_name ~www\d+\.example\.com$;
  return 200 'Hello';
}

Why is this regex server_name directive incorrect?
medium
A. Missing ^ anchor at start of regex
B. Regex server name must start with ~ and pattern must start with ^
C. Regex pattern missing delimiters like / /
D. Regex server name must start with ~ and pattern must be valid

Solution

  1. Step 1: Check regex server_name syntax

    Regex server names must start with ~ and the pattern should start with ^ to match from the beginning.
  2. Step 2: Identify missing ^ anchor

    The pattern www\d+\.example\.com$ lacks the ^ anchor, causing partial matches rather than full hostname matches.
  3. Final Answer:

    Regex server name must start with ~ and pattern must start with ^ -> Option B
  4. Quick Check:

    Regex patterns need ^ anchor at start [OK]
Hint: Regex patterns should start with ^ for nginx server_name [OK]
Common Mistakes:
  • Omitting ^ anchor in regex pattern
  • Thinking delimiters like / / are needed
  • Ignoring nginx error messages about regex
5. You want nginx to serve requests for any subdomain of example.com except www.example.com. Which server_name config achieves this?
hard
A. server_name ~^(?!www\.)[^.]+\.example\.com$;
B. server_name *.example.com www.example.com;
C. server_name ~^www\d+\.example\.com$;
D. server_name example.com *.example.com;

Solution

  1. Step 1: Understand the requirement

    We want to match any subdomain except 'www.example.com'. This requires a regex with negative lookahead.
  2. Step 2: Analyze options

    server_name ~^(?!www\.)[^.]+\.example\.com$; uses ~^(?!www\.)[^.]+\.example\.com$ which matches any subdomain not starting with 'www.'. Others either include 'www' or don't exclude it.
  3. Final Answer:

    server_name ~^(?!www\.)[^.]+\.example\.com$; -> Option A
  4. Quick Check:

    Negative lookahead excludes www subdomain [OK]
Hint: Use negative lookahead in regex to exclude specific subdomains [OK]
Common Mistakes:
  • Using wildcard that includes www.example.com
  • Not using regex for exclusion
  • Confusing wildcard and regex syntax
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