What if your server could instantly recognize any new subdomain without you lifting a finger?
Why Wildcard and regex server names in Nginx? - Purpose & Use Cases
Imagine you manage a website with many subdomains like blog.example.com, shop.example.com, and forum.example.com.
Manually adding each subdomain to your server configuration feels like writing a long guest list for a huge party.
Manually listing every subdomain is slow and easy to forget some.
When new subdomains appear, you must update the config again and reload the server, causing delays and mistakes.
Using wildcard and regex server names lets you catch many subdomains with one simple rule.
This means your server automatically handles new subdomains without extra work.
server_name blog.example.com shop.example.com forum.example.com;
server_name *.example.com;
You can manage many subdomains easily and flexibly, saving time and avoiding errors.
A company launches new product sites like product1.example.com and product2.example.com daily.
With wildcard server names, their server instantly supports these without config changes.
Manually listing server names is slow and error-prone.
Wildcard and regex server names simplify configuration.
This approach scales effortlessly as new subdomains appear.
Practice
*.example.com match in nginx?Solution
Step 1: Understand wildcard usage in server names
A wildcard*before a domain matches any subdomain part, but not the root domain itself.Step 2: Apply to
This matches domains like*.example.comblog.example.comorshop.example.com, but notexample.comalone.Final Answer:
Any subdomain of example.com, like blog.example.com or shop.example.com -> Option CQuick Check:
Wildcard*matches subdomains only [OK]
- Thinking wildcard matches the root domain
- Confusing wildcard with regex syntax
- Assuming wildcard matches any domain ending
Solution
Step 1: Recall regex server name syntax in nginx
Regex server names start with a tilde~followed by the regex pattern.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.Final Answer:
server_name ~^www\d+\.example\.com$; -> Option DQuick Check:
Regex server names start with ~ [OK]
- Omitting the ~ before regex pattern
- Using * instead of ~ for regex
- Using slashes / / as regex delimiters
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?Solution
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'.Step 2: Check if 'www12.example.com' matches
'www12.example.com' matches the pattern because '12' are digits after 'www'.Final Answer:
Matched regex server name -> Option AQuick Check:
Regex matches www12.example.com [OK]
- Assuming regex matches partial strings
- Ignoring start ^ and end $ anchors
- Confusing regex with wildcard matching
server {
server_name ~www\d+\.example\.com$;
return 200 'Hello';
}Why is this regex server_name directive incorrect?
Solution
Step 1: Check regex server_name syntax
Regex server names must start with~and the pattern should start with^to match from the beginning.Step 2: Identify missing ^ anchor
The patternwww\d+\.example\.com$lacks the^anchor, causing partial matches rather than full hostname matches.Final Answer:
Regex server name must start with ~ and pattern must start with ^ -> Option BQuick Check:
Regex patterns need ^ anchor at start [OK]
- Omitting ^ anchor in regex pattern
- Thinking delimiters like / / are needed
- Ignoring nginx error messages about regex
www.example.com. Which server_name config achieves this?Solution
Step 1: Understand the requirement
We want to match any subdomain except 'www.example.com'. This requires a regex with negative lookahead.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.Final Answer:
server_name ~^(?!www\.)[^.]+\.example\.com$; -> Option AQuick Check:
Negative lookahead excludes www subdomain [OK]
- Using wildcard that includes www.example.com
- Not using regex for exclusion
- Confusing wildcard and regex syntax
Ready to prove it?
Pass the test and this pattern moves unknown
